大家好,我现在遇到一个andorid crash的问题。
主要提示我的com.android.systemui 进程挂了信息提示如下:
pid: 308, tid: 311 >>> com.android.systemui <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000020
tls: 44564f00 r0 00000000 r1 00000000 r2 40012328 r3 400121e8
r4 00000302 r5 40012228 r6 40042248 r7 aca9759c
r8 fffffe84 r9 80000000 10 400121e8 fp 40042300
ip aca9ccd8 sp 44564d78 lr aca30600 pc aca2f94c cpsr 80000010
d0 0000000000836832 d1 4046b9704046b800
d2 4046bde04042d400 d3 403e02a8403e0100
d4 403ac418403ac028 d5 404769f0403ac5d8
d6 40464e8840476ad0 d7 403c3e88404653c8
d8 0000000000000000 d9 0000000000000000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 0000000000000000 d17 3ff0000000000000
d18 4d4d4d4d4d4d4d4d d19 4d4d4d4d4d4d4d4d
d20 4008000000000000 d21 0000000000000000
d22 000000000000004d d23 3fcc7288e957b53b
d24 3fc74721cad6b0ed d25 3fc39a09d078c69f
d26 0000000000000000 d27 0000000000000000
d28 0000000000000000 d29 0000000000000000
d30 0000000000000000 d31 0000000000000000
scr 80000012 #00 pc 0002f94c /system/lib/libdvm.so
#01 pc 000305fc /system/lib/libdvm.so
#02 pc 0001a640 /system/lib/libdvm.so
#03 pc 00066054 /system/lib/libdvm.so
#04 pc 0004aa7a /system/lib/libdvm.so
#05 pc 00011994 /system/lib/libc.so
#06 pc 00011560 /system/lib/libc.socode around pc:
aca2f92c 0a000001 e1a01006 eb0130c2 e797c008
aca2f93c e5961000 e59c20ac e1510002 0a0000b5
aca2f94c e5912020 e3120101 0a000055 e3510000
aca2f95c e1a03001 0a000021 e5950010 e1510000
aca2f96c 3a00001e e5953000 e593c00c e5930010 code around lr:
aca305e0 e58de004 e16f2f17 e59d3004 e585b014
aca305f0 e1a01005 e1c77239 e0830182 ebfffcc0
aca30600 e3570000 1afffff6 e598c010 e598100c
aca30610 e061000c e1a02420 eaffffdb 00067048
aca30620 fffffe84 e1a03001 e59f104c e92d4030 stack:
44564d38 2f498821
44564d3c c87f82f8
...我是这样分析的:
1 pid: 308, tid: 311 PID和TID不同,说明是在子进程中出现问题的。
2 反汇编.so的 PC寄存器的地址
得出的是这么一个调用流程
0 dvmHeapMarkRootSet
1 dvmHeapScanMaredObjects
2 dvmCollectGarbageInternal
3 dvmHeapSourceStartupAfterZygote
4 dvmDetachCurrentThread
5 __thread_entry
6 pthread_create流程是从下往上的 5和6是 创建个线程,4对应的应该是JNI的env->DetachCurrentThread,3-0是垃圾回收流程,看最后个函数是dvmHeapMarkRootSet负责标记heap中的没有任何引用连接的root对象的时候,挂了,不清楚 有什么情况 会导致 android系统在垃圾回收的时候会crash掉。 希望知道的大哥帮忙看下。谢谢!
主要提示我的com.android.systemui 进程挂了信息提示如下:
pid: 308, tid: 311 >>> com.android.systemui <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000020
tls: 44564f00 r0 00000000 r1 00000000 r2 40012328 r3 400121e8
r4 00000302 r5 40012228 r6 40042248 r7 aca9759c
r8 fffffe84 r9 80000000 10 400121e8 fp 40042300
ip aca9ccd8 sp 44564d78 lr aca30600 pc aca2f94c cpsr 80000010
d0 0000000000836832 d1 4046b9704046b800
d2 4046bde04042d400 d3 403e02a8403e0100
d4 403ac418403ac028 d5 404769f0403ac5d8
d6 40464e8840476ad0 d7 403c3e88404653c8
d8 0000000000000000 d9 0000000000000000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 0000000000000000 d17 3ff0000000000000
d18 4d4d4d4d4d4d4d4d d19 4d4d4d4d4d4d4d4d
d20 4008000000000000 d21 0000000000000000
d22 000000000000004d d23 3fcc7288e957b53b
d24 3fc74721cad6b0ed d25 3fc39a09d078c69f
d26 0000000000000000 d27 0000000000000000
d28 0000000000000000 d29 0000000000000000
d30 0000000000000000 d31 0000000000000000
scr 80000012 #00 pc 0002f94c /system/lib/libdvm.so
#01 pc 000305fc /system/lib/libdvm.so
#02 pc 0001a640 /system/lib/libdvm.so
#03 pc 00066054 /system/lib/libdvm.so
#04 pc 0004aa7a /system/lib/libdvm.so
#05 pc 00011994 /system/lib/libc.so
#06 pc 00011560 /system/lib/libc.socode around pc:
aca2f92c 0a000001 e1a01006 eb0130c2 e797c008
aca2f93c e5961000 e59c20ac e1510002 0a0000b5
aca2f94c e5912020 e3120101 0a000055 e3510000
aca2f95c e1a03001 0a000021 e5950010 e1510000
aca2f96c 3a00001e e5953000 e593c00c e5930010 code around lr:
aca305e0 e58de004 e16f2f17 e59d3004 e585b014
aca305f0 e1a01005 e1c77239 e0830182 ebfffcc0
aca30600 e3570000 1afffff6 e598c010 e598100c
aca30610 e061000c e1a02420 eaffffdb 00067048
aca30620 fffffe84 e1a03001 e59f104c e92d4030 stack:
44564d38 2f498821
44564d3c c87f82f8
...我是这样分析的:
1 pid: 308, tid: 311 PID和TID不同,说明是在子进程中出现问题的。
2 反汇编.so的 PC寄存器的地址
得出的是这么一个调用流程
0 dvmHeapMarkRootSet
1 dvmHeapScanMaredObjects
2 dvmCollectGarbageInternal
3 dvmHeapSourceStartupAfterZygote
4 dvmDetachCurrentThread
5 __thread_entry
6 pthread_create流程是从下往上的 5和6是 创建个线程,4对应的应该是JNI的env->DetachCurrentThread,3-0是垃圾回收流程,看最后个函数是dvmHeapMarkRootSet负责标记heap中的没有任何引用连接的root对象的时候,挂了,不清楚 有什么情况 会导致 android系统在垃圾回收的时候会crash掉。 希望知道的大哥帮忙看下。谢谢!
I/DEBUG ( 832): #01 pc 00061798 /system/lib/libstagefright.so (_ZN7android12CameraSource28isCameraColorFormatSupportedERKNS_16CameraParametersE)
I/DEBUG ( 832): #02 pc 00061bec /system/lib/libstagefright.so (_ZN7android12CameraSource20initWithCameraAccessERKNS_2spINS_7ICameraEEERKNS1_INS_21ICameraRecordingProxyEEEiNS_4SizeEib)
I/DEBUG ( 832): #03 pc 00061dae /system/lib/libstagefright.so (_ZN7android12CameraSource4initERKNS_2spINS_7ICameraEEERKNS1_INS_21ICameraRecordingProxyEEEiNS_4SizeEib)
E/Camera ( 1556): Error 100
E/CameraErrorCallback( 1556): Got camera error callback. error=100
D/AndroidRuntime( 1556): Shutting down VM
W/dalvikvm( 1556): threadid=1: thread exiting with uncaught exception (group=0x409991f8)
E/AndroidRuntime( 1556): FATAL EXCEPTION: main
E/AndroidRuntime( 1556): java.lang.RuntimeException: Media server died.
E/AndroidRuntime( 1556): at com.android.camera.CameraErrorCallback.onError(CameraErrorCallback.java:31)
E/AndroidRuntime( 1556): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:738)
E/AndroidRuntime( 1556): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 1556): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 1556): at android.app.ActivityThread.main(ActivityThread.java:4340)
这个解决的方法和思路一样,都是从下往上找.最顶上为实际出错位置.