Тихая ошибка: отладчик совершает самоубийство, чтобы освободить зомби
Кажется, мое приложение молча выключается каждые 3-4 раза, когда я его запускаю. Не исключение, нет принудительного закрытия сообщения, оно просто открывается на долю секунды, а затем выключается. После этого я могу без проблем запустить его в среднем 3-4 раза, прежде чем снова произойдет то же самое, и так далее.
Мне удалось точно определить его на одной из моих вкладок (я использую FragmentPagerAdapter). Если я не создаю эту вкладку, это никогда не произойдет. Кроме того, это невозможно отследить, потому что это не происходит каждый раз в одном и том же месте. Когда я смотрю на мой вывод LogCat, это происходит каждый раз в немного разных местах. LogCat-сообщения отладчика (см. Ниже) также распространяются между журналами некоторых моих приложений, но это также меняется.
Мое приложение довольно большое, поэтому размещение источников здесь невозможно, так как я не могу точно определить проблему. Я могу сказать, что вкладка, которая вызывает это, в основном является фрагментом, содержащим ListViewFragment, который использует пользовательский SimpleCursorAdapter.
Был бы очень признателен за все, что может направить меня в правильном направлении...
Я получаю это на Nexus One с Android 2.3.6.
03-17 21:18:32.650: I/DEBUG(8687): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-17 21:18:32.650: I/DEBUG(8687): Build fingerprint: 'google/passion_vf/passion:2.3.6/GRK39F/224392.2:user/release-keys'
03-17 21:18:32.650: I/DEBUG(8687): pid: 8909, tid: 8910 >>> com.magnuswikhog.adrlibrary4 <<<
03-17 21:18:32.650: I/DEBUG(8687): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000c
03-17 21:18:32.650: I/DEBUG(8687): r0 00000000 r1 00000007 r2 421b5d4c r3 00000014
03-17 21:18:32.650: I/DEBUG(8687): r4 100ffaf0 r5 00000004 r6 100ffb70 r7 43c9bda0
03-17 21:18:32.650: I/DEBUG(8687): r8 100ffad0 r9 43c9bd98 10 43c9bd80 fp 800a5368
03-17 21:18:32.650: I/DEBUG(8687): ip ad33f5d9 sp 100ffac8 lr 80049229 pc ad33f5e4 cpsr 20000030
03-17 21:18:32.650: I/DEBUG(8687): d0 0072007500630028 d1 002e0072006f0000
03-17 21:18:32.650: I/DEBUG(8687): d2 0043007400650029 d3 0074006e00750000
03-17 21:18:32.650: I/DEBUG(8687): d4 00300033002a5c00 d5 0033002c00320030
03-17 21:18:32.650: I/DEBUG(8687): d6 002c003100300030 d7 0036003000300031
03-17 21:18:32.650: I/DEBUG(8687): d8 0000000000000000 d9 0000000000000000
03-17 21:18:32.650: I/DEBUG(8687): d10 0000000000000000 d11 0000000000000000
03-17 21:18:32.650: I/DEBUG(8687): d12 0000000000000000 d13 0000000000000000
03-17 21:18:32.650: I/DEBUG(8687): d14 0000000000000000 d15 0000000000000000
03-17 21:18:32.650: I/DEBUG(8687): d16 0000000004a50b72 d17 3ff0000000000000
03-17 21:18:32.650: I/DEBUG(8687): d18 42eccefa43de3400 d19 3fbc71c71c71c71c
03-17 21:18:32.650: I/DEBUG(8687): d20 4008000000000000 d21 3fd99a27ad32ddf5
03-17 21:18:32.650: I/DEBUG(8687): d22 3fd24998d6307188 d23 3fcc7288e957b53b
03-17 21:18:32.650: I/DEBUG(8687): d24 3fc74721cad6b0ed d25 3fc39a09d078c69f
03-17 21:18:32.650: I/DEBUG(8687): d26 0000000000000000 d27 0000000000000000
03-17 21:18:32.650: I/DEBUG(8687): d28 0000000000000000 d29 0000000000000000
03-17 21:18:32.650: I/DEBUG(8687): d30 0000000000000000 d31 0000000000000000
03-17 21:18:32.650: I/DEBUG(8687): scr 80000012
03-17 21:18:32.720: I/DEBUG(8687): #00 pc 0003f5e4 /system/lib/libandroid_runtime.so
03-17 21:18:32.720: I/DEBUG(8687): #01 pc 00017e34 /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #02 pc 0004968c /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #03 pc 0001d034 /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #04 pc 000220e4 /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #05 pc 00020fdc /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #06 pc 0005fc40 /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #07 pc 0005fe54 /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #08 pc 00055fec /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #09 pc 00056068 /system/lib/libdvm.so
03-17 21:18:32.720: I/DEBUG(8687): #10 pc 000561fa /system/lib/libdvm.so
03-17 21:18:32.730: I/DEBUG(8687): #11 pc 000540ce /system/lib/libdvm.so
03-17 21:18:32.730: I/DEBUG(8687): #12 pc 000118e4 /system/lib/libc.so
03-17 21:18:32.730: I/DEBUG(8687): #13 pc 000114b0 /system/lib/libc.so
03-17 21:18:32.730: I/DEBUG(8687): code around pc:
03-17 21:18:32.730: I/DEBUG(8687): ad33f5c4 b5104a03 6812447a fd08f7f4 bf00bd10
03-17 21:18:32.730: I/DEBUG(8687): ad33f5d4 00047e48 b5104a04 6812447a fcfef7f4
03-17 21:18:32.730: I/DEBUG(8687): ad33f5e4 681868c3 bf00bd10 00047e34 b5104a05
03-17 21:18:32.730: I/DEBUG(8687): ad33f5f4 6812447a fcf2f7f4 681a68c3 3a01b10a
03-17 21:18:32.730: I/DEBUG(8687): ad33f604 bd10601a 00047e1c 4614b513 447a4a0e
03-17 21:18:32.730: I/DEBUG(8687): code around lr:
03-17 21:18:32.730: I/DEBUG(8687): 80049208 21014628 fd78f009 f01368f3 69330f40
03-17 21:18:32.730: I/DEBUG(8687): 80049218 58e4bf08 58e4d000 21074628 fd6cf009
03-17 21:18:32.730: I/DEBUG(8687): 80049228 bd704620 6905b570 460c4616 21014628
03-17 21:18:32.730: I/DEBUG(8687): 80049238 fd62f009 f01368f3 69330f40 5ae4bf08
03-17 21:18:32.730: I/DEBUG(8687): 80049248 58e4d001 4628b2a4 f0092107 b220fd55
03-17 21:18:32.730: I/DEBUG(8687): stack:
03-17 21:18:32.730: I/DEBUG(8687): 100ffa88 4068e848
03-17 21:18:32.730: I/DEBUG(8687): 100ffa8c 4068e848
03-17 21:18:32.730: I/DEBUG(8687): 100ffa90 4050a018
03-17 21:18:32.730: I/DEBUG(8687): 100ffa94 00000014
03-17 21:18:32.730: I/DEBUG(8687): 100ffa98 40009280
03-17 21:18:32.730: I/DEBUG(8687): 100ffa9c 4068e848
03-17 21:18:32.730: I/DEBUG(8687): 100ffaa0 00000000
03-17 21:18:32.730: I/DEBUG(8687): 100ffaa4 0008fcb0
03-17 21:18:32.730: I/DEBUG(8687): 100ffaa8 421b5d4c
03-17 21:18:32.730: I/DEBUG(8687): 100ffaac 80049229 /system/lib/libdvm.so
03-17 21:18:32.730: I/DEBUG(8687): 100ffab0 100ffaf0
03-17 21:18:32.730: I/DEBUG(8687): 100ffab4 00000004
03-17 21:18:32.730: I/DEBUG(8687): 100ffab8 100ffb70
03-17 21:18:32.730: I/DEBUG(8687): 100ffabc ad333feb /system/lib/libandroid_runtime.so
03-17 21:18:32.730: I/DEBUG(8687): 100ffac0 df002777
03-17 21:18:32.740: I/DEBUG(8687): 100ffac4 e3a070ad
03-17 21:18:32.740: I/DEBUG(8687): #00 100ffac8 100ffaf0
03-17 21:18:32.740: I/DEBUG(8687): 100ffacc 80017e38 /system/lib/libdvm.so
03-17 21:18:32.740: I/DEBUG(8687): #01 100ffad0 0008fcb0
03-17 21:18:32.740: I/DEBUG(8687): 100ffad4 00000001
03-17 21:18:32.740: I/DEBUG(8687): 100ffad8 100ffb70
03-17 21:18:32.740: I/DEBUG(8687): 100ffadc 43c9bd94
03-17 21:18:32.740: I/DEBUG(8687): 100ffae0 421b5fa4
03-17 21:18:32.740: I/DEBUG(8687): 100ffae4 0008fcb0
03-17 21:18:32.740: I/DEBUG(8687): 100ffae8 100ffaf0
03-17 21:18:32.740: I/DEBUG(8687): 100ffaec 8004968f /system/lib/libdvm.so
03-17 21:18:32.990: I/DEBUG(8687): debuggerd committing suicide to free the zombie!
03-17 21:18:32.990: I/BootReceiver(101): Copying /data/tombstones/tombstone_04 to DropBox (SYSTEM_TOMBSTONE)
03-17 21:18:33.000: E/InputDispatcher(101): channel '407606c0 com.magnuswikhog.adrlibrary4/com.magnuswikhog.adrlibrary4.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x8
03-17 21:18:33.000: E/InputDispatcher(101): channel '407606c0 com.magnuswikhog.adrlibrary4/com.magnuswikhog.adrlibrary4.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
03-17 21:18:33.000: D/Zygote(67): Process 8909 terminated by signal (11)
03-17 21:18:33.010: I/DEBUG(8930): debuggerd: Dec 9 2011 18:21:46
03-17 21:18:33.070: D/dalvikvm(191): GC_EXPLICIT freed 4K, 48% free 3120K/5959K, external 5052K/5767K, paused 550ms
03-17 21:18:33.070: D/dalvikvm(101): GC_FOR_MALLOC freed 1537K, 48% free 6246K/11911K, external 3513K/3905K, paused 76ms
03-17 21:18:33.070: I/ActivityManager(101): Process com.magnuswikhog.adrlibrary4 (pid 8909) has died.
03-17 21:18:33.070: I/WindowManager(101): WIN DEATH: Window{407606c0 com.magnuswikhog.adrlibrary4/com.magnuswikhog.adrlibrary4.MainActivity paused=false}
03-17 21:18:33.140: W/InputManagerService(101): Client not active, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40a52960
03-17 21:18:33.270: D/dalvikvm(191): GC_EXPLICIT freed 2K, 48% free 3118K/5959K, external 5052K/5767K, paused 103ms
03-17 21:18:34.700: W/InputConnectionWrapper.ICC(174): Timed out waiting on IInputContextCallback
2 ответа
Я расшифровал трассировку стека с помощью passion-symbols-189904, который также является GRK39F, но, похоже, с другого устройства. я надеюсь libandroid_runtime.so
по существу без изменений. След:
Stack Trace:
RELADDR FUNCTION FILE:LINE
0003f5e4 android::getNumRows(_JNIEnv*, _jobject*)+12 /usr/local/google/buildbot/repo_clients/goog/frameworks/base/core/jni/android_database_CursorWindow.cpp:508
00017e34 dvmPlatformInvoke+116 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/arch/arm/CallEABI.S:243
0004968c dvmCallJNIMethod_virtualNoRef+52 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/Jni.c:1790
0001d034 dalvik_mterp+12 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:10017
000220e4 dvmMterpStd+140 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/mterp/Mterp.c:105
00020fdc dvmInterpret+272 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/interp/Interp.c:1345
0005fc40 dvmCallMethodV+300 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/interp/Stack.c:529
0005fe54 dvmCallMethod+20 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/interp/Stack.c:434
00055fec callMethod+88 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/alloc/HeapWorker.c:244
00056068 doHeapWork+52 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/alloc/HeapWorker.c:307
000561fa heapWorkerThreadStart+310 /usr/local/google/buildbot/repo_clients/goog/dalvik/vm/alloc/HeapWorker.c:437
Предполагая совпадение символов, он вызывает функцию CursorWindow из финализатора. Вы не можете видеть трассировку управляемого стека, поэтому трудно сказать, какой финализатор. Глядя на строку 508 здесь, я бы предположил, что "окно" имеет значение NULL.
Тот факт, что это происходит в финализаторе, вероятно, объясняет, почему это происходит каждый раз в немного разных местах - время привязано к сбору мусора.
Я предполагаю, что есть что-то с Cursor
что вы могли бы закрывать явно, но это не так, так что финализатор выполняет (и шарит) работу.
Используете ли вы какие-либо пользовательские шрифты на конкретной вкладке? Я столкнулся с точно такой же проблемой несколько лет назад, и она сузилась до специального шрифта, который я объявил.
https://groups.google.com/forum/m/
http://dixonof.wordpress.com/2009/09/01/android-debuggerd-zombie/
Надеюсь это поможет!