奇怪的致命交通意外与​​ExifInterface和VM中止奇怪、意外、交通、VM

2023-09-06 16:33:33 作者:能否再爱一次

我收到一个奇怪的致命碰撞与ExifInterface。 ,让崩溃的线路是这样的,很简单(Foto.java:341):

  ExifInterface EXIF​​ =新ExifInterface(文件名);
 

我只得到了一些照片的崩溃。更为奇特的是,如果我看到一个正常的图片的EXIF,关闭程序,然后重新打开程序,看有问题的照片,我得到了previous图像EXIF。很strage。

任何想法是什么原因造成的?该施特拉克跟踪如下。

  01-13 21:23:42.148:W / dalvikvm(10868):JNI警告:收到空的jstring
01-13 21:23:42.148:W / dalvikvm(10868):在Landroid /媒体/ ExifInterface; .getAttributesNative:(Ljava /朗/字符串;)Ljava /朗/字符串; (GetStringUTFChars)
01-13 21:23:42.148:I / dalvikvm(10868):主要的PRIO = 5 TID = 1的原生
01-13 21:23:42.148:I / dalvikvm(10868):|组=主SCOUNT = 0 dsCount = 0的obj = 0x40c6e460自我= 0x12938
01-13 21:23:42.148:I / dalvikvm(10868):| sysTid = 10868漂亮= 0 sched的= 0/0 CGRP =默认的手柄= 1075021096
01-13 21:23:42.148:I / dalvikvm(10868):| schedstat =(618641072 82163138 362)UTM = 57 STM = 4芯= 1
01-13 21:23:42.148:I / dalvikvm(10868):在android.media.ExifInterface.getAttributesNative(本机方法)
01-13 21:23:42.148:I / dalvikvm(10868):在android.media.ExifInterface.loadAttributes(ExifInterface.java:204)
01-13 21:23:42.148:I / dalvikvm(10868):在android.media.ExifInterface< INIT>(ExifInterface.java:121)。
01-13 21:23:42.148:I / dalvikvm(10868):在com.floritfoto.apps.xvf.Foto.printexif(Foto.java:341)
01-13 21:23:42.148:I / dalvikvm(10868):在com.floritfoto.apps.xvf.Foto $ 3.onLongClick(Foto.java:449)
01-13 21:23:42.148:I / dalvikvm(10868):在android.view.View.performLongClick(View.java:3656)
01-13 21:23:42.148:I / dalvikvm(10868):在android.view.View $ CheckForLong press.run(View.java:14270)
01-13 21:23:42.148:I / dalvikvm(10868):在android.os.Handler.handleCallback(Handler.java:605)
01-13 21:23:42.148:I / dalvikvm(10868):在android.os.Handler.dispatchMessage(Handler.java:92)
01-13 21:23:42.148:I / dalvikvm(10868):在android.os.Looper.loop(Looper.java:137)
01-13 21:23:42.148:I / dalvikvm(10868):在android.app.ActivityThread.main(ActivityThread.java:4507)
01-13 21:23:42.148:I / dalvikvm(10868):在java.lang.reflect.Method.invokeNative(本机方法)
01-13 21:23:42.148:I / dalvikvm(10868):在java.lang.reflect.Method.invoke(Method.java:511)
01-13 21:23:42.148:I / dalvikvm(10868):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:980)
01-13 21:23:42.148:I / dalvikvm(10868):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
01-13 21:23:42.148:I / dalvikvm(10868):在dalvik.system.NativeStart.main(本机方法)
01-13 21:23:42.148:E / dalvikvm(10868):VM中止
01-13 21:23:42.148:在0xdeadd00d(code = 1)致命的信号11(SIGSEGV):A /的libc(10868)
 

解决方案

新ExifInterface(空)会导致SIGSEGV。

在这里同样的答案: Android的位图致命的信号11(SIGSEGV)

I'm getting a strange fatal crash with ExifInterface. The line that gives the crash is this, quite straightforward (Foto.java:341):

ExifInterface exif = new ExifInterface(filename);

I only get the crash with some pictures. Even more strange is the fact that if I see a normal picture's exif, close the program, and open the program again to see a problematic picture, I get the exif from the previous image. Quite strage.

Any idea what is causing this? The Strack Trace is below.

01-13 21:23:42.148: W/dalvikvm(10868): JNI WARNING: received null jstring
01-13 21:23:42.148: W/dalvikvm(10868):              in Landroid/media/ExifInterface;.getAttributesNative:(Ljava/lang/String;)Ljava/lang/String; (GetStringUTFChars)
01-13 21:23:42.148: I/dalvikvm(10868): "main" prio=5 tid=1 NATIVE
01-13 21:23:42.148: I/dalvikvm(10868):   | group="main" sCount=0 dsCount=0 obj=0x40c6e460 self=0x12938
01-13 21:23:42.148: I/dalvikvm(10868):   | sysTid=10868 nice=0 sched=0/0 cgrp=default handle=1075021096
01-13 21:23:42.148: I/dalvikvm(10868):   | schedstat=( 618641072 82163138 362 ) utm=57 stm=4 core=1
01-13 21:23:42.148: I/dalvikvm(10868):   at android.media.ExifInterface.getAttributesNative(Native Method)
01-13 21:23:42.148: I/dalvikvm(10868):   at android.media.ExifInterface.loadAttributes(ExifInterface.java:204)
01-13 21:23:42.148: I/dalvikvm(10868):   at android.media.ExifInterface.<init>(ExifInterface.java:121)
01-13 21:23:42.148: I/dalvikvm(10868):   at com.floritfoto.apps.xvf.Foto.printexif(Foto.java:341)
01-13 21:23:42.148: I/dalvikvm(10868):   at com.floritfoto.apps.xvf.Foto$3.onLongClick(Foto.java:449)
01-13 21:23:42.148: I/dalvikvm(10868):   at android.view.View.performLongClick(View.java:3656)
01-13 21:23:42.148: I/dalvikvm(10868):   at android.view.View$CheckForLongPress.run(View.java:14270)
01-13 21:23:42.148: I/dalvikvm(10868):   at android.os.Handler.handleCallback(Handler.java:605)
01-13 21:23:42.148: I/dalvikvm(10868):   at android.os.Handler.dispatchMessage(Handler.java:92)
01-13 21:23:42.148: I/dalvikvm(10868):   at android.os.Looper.loop(Looper.java:137)
01-13 21:23:42.148: I/dalvikvm(10868):   at android.app.ActivityThread.main(ActivityThread.java:4507)
01-13 21:23:42.148: I/dalvikvm(10868):   at java.lang.reflect.Method.invokeNative(Native Method)
01-13 21:23:42.148: I/dalvikvm(10868):   at java.lang.reflect.Method.invoke(Method.java:511)
01-13 21:23:42.148: I/dalvikvm(10868):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
01-13 21:23:42.148: I/dalvikvm(10868):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
01-13 21:23:42.148: I/dalvikvm(10868):   at dalvik.system.NativeStart.main(Native Method)
01-13 21:23:42.148: E/dalvikvm(10868): VM aborting
01-13 21:23:42.148: A/libc(10868): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1)

解决方案

new ExifInterface(null) will cause SIGSEGV.

Same answer here: Android Bitmap Fatal signal 11 (SIGSEGV)