В моем приложении не используется NDK. Я тестирую его на эмуляторе GenyMotion Nexus 7, и проблему довольно сложно воспроизвести, и я до сих пор не понял правильный способ ее воспроизвести. Иногда приложение работает отлично в течение длительного времени, а иногда оно просто сбой и автоматически перезапускается примерно через 30 секунд после использования.
EDIT: я не 100%, но это происходит только в эмуляторе genymotion, но не в обычном эмуляторе Android (я продолжу тестирование).
Проблема началась, когда я добавил поддержку большого экрана в ландшафтном режиме (начал показывать два фрагмента одновременно в ландшафте и только 1 в портрете (с шириной меньше 720)).
Один из фрагментов ленивых изображений загрузок (из памяти, диска или Интернета).
Я новичок в этом динамическом добавлении и удалении фрагментов, поэтому я уверен, что там что-то может быть.
В любом случае, пожалуйста, помогите мне декодировать этот дамп и выяснить, что вызывает крушение (я попытаюсь пропустить материал, который, я думаю, не имеет значения):
12-17 16:52:18.344 1255-1255/? A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x97858094 (code=2), thread 1255 (hiexpressgradle)
12-17 16:52:18.448 121-121/? I/DEBUG﹕ *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-17 16:52:18.448 121-121/? I/DEBUG﹕ Build fingerprint: 'generic/vbox86tp/vbox86tp:4.3/JLS36G/eng.buildbot.20131127.101043:userdebug/test-keys'
12-17 16:52:18.448 121-121/? I/DEBUG﹕ Revision: '0'
12-17 16:52:18.448 121-121/? I/DEBUG﹕ pid: 1255, tid: 1255, name: hiexpressgradle >>> XXX <<<
12-17 16:52:18.448 121-121/? I/DEBUG﹕ signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 97858094
12-17 16:52:18.608 121-121/? I/DEBUG﹕ eax 00000000 ebx b754a6fc ecx 0000000e edx 978580a2
12-17 16:52:18.608 121-121/? I/DEBUG﹕ esi 0000000c edi 00000001
12-17 16:52:18.608 121-121/? I/DEBUG﹕ xcs 00000073 xds 0000007b xes 0000007b xfs 00000000 xss 0000007b
12-17 16:52:18.608 121-121/? I/DEBUG﹕ eip b754a6fc ebp b94985e8 esp bfe29398 flags 00210292
12-17 16:52:18.608 121-121/? E/Corkscrew﹕ unrecognized DW_CFA_* instruction: 0x10
12-17 16:52:18.608 121-121/? I/DEBUG﹕ backtrace:
12-17 16:52:18.608 121-121/? I/DEBUG﹕ #00 pc 0002f6fc /system/lib/libc.so (memset+140)
12-17 16:52:18.608 121-121/? I/DEBUG﹕ #01 pc 00015c6f /system/lib/libhwui.so (android::uirenderer::FontRenderer::cacheBitmap(SkGlyph const&, android::uirenderer::CachedGlyphInfo*, unsigned int*, unsigned int*, bool)+511)
12-17 16:52:18.608 121-121/? I/DEBUG﹕ #02 pc 00011aea /system/lib/libhwui.so (android::uirenderer::Font::precache(SkPaint*, char const*, int)+922)
12-17 16:52:18.608 121-121/? I/DEBUG﹕ #03 pc 0001414e /system/lib/libhwui.so (android::uirenderer::FontRenderer::precache(SkPaint*, char const*, int, android::uirenderer::Matrix4 const&)+78)
12-17 16:52:18.608 121-121/? I/DEBUG﹕ #04 pc 00024aa6 /system/lib/libhwui.so (android::uirenderer::DrawTextOp::onDefer(android::uirenderer::OpenGLRenderer&, int*, void**)+486)
12-17 16:52:18.608 121-121/? I/DEBUG﹕ stack:
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29358 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2935c 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29360 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29364 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29368 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2936c 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29370 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29374 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29378 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2937c 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29380 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29384 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29388 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2938c 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29390 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29394 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ #00 bfe29398 b5ba5aac /system/lib/libhwui.so
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2939c b5b3ec70 /system/lib/libhwui.so (android::uirenderer::FontRenderer::cacheBitmap(SkGlyph const&, android::uirenderer::CachedGlyphInfo*, unsigned int*, unsigned int*, bool)+512)
12-17 16:52:18.608 121-121/? I/DEBUG﹕ #01 bfe293a0 97858094
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293a4 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293a8 0000000e
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293ac bfe2940c [stack]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293b0 b9726ae4 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293b4 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293b8 b934c340 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293bc b6bff210 /system/lib/libskia.so (SkGlyphCache::findImage(SkGlyph const&)+144)
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293c0 b972f550 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293c4 b934b588 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293c8 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293cc 00000032
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293d0 bfe29410 [stack]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293d4 bfe2940c [stack]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293d8 97858008
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe293dc b6eb8d48 /system/lib/libskia.so
12-17 16:52:18.608 121-121/? I/DEBUG﹕ ........ ........
12-17 16:52:18.608 121-121/? I/DEBUG﹕ #02 bfe29430 b94985e8 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29434 b9726ae4 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29438 b966b9c8 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2943c bfe29470 [stack]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29440 bfe29474 [stack]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29444 00000001
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29448 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2944c 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29450 3f800000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29454 00000010
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29458 b966b9c8 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2945c b9670dc6 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29460 b94907a4 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29464 b9670e28 [heap]
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe29468 3f800026
12-17 16:52:18.608 121-121/? I/DEBUG﹕ bfe2946c 00000000
12-17 16:52:18.608 121-121/? I/DEBUG﹕ ........ ........
12-17 16:52:18.608 121-121/? I/DEBUG﹕ memory map around fault addr 97858094:
12-17 16:52:18.608 121-121/? I/DEBUG﹕ 977fa000-97858000 r-x /dev/ashmem/dalvik-jit-code-cache (deleted)
12-17 16:52:18.608 121-121/? I/DEBUG﹕ 97858000-97859000 r-x
12-17 16:52:18.608 121-121/? I/DEBUG﹕ 97859000-978d9000 rw-
Спасибо за ваш вход @Simon, после некоторого тестирования я начал получать ошибку и в эмуляторе Android. Но на эмуляторе Android это было хорошее старое исключение OutOfMemory. Так что получается, что мой управляемый менеджер (на одном из фрагментов) имел огромную утечку памяти, где он раздувал бы HashMap с помощью drawables. Это стало проблемой только в том случае, когда я реализовал макет двух панелей, поскольку DrawableManager всегда оставался в памяти (потому что фрагмент выбора категории, в котором хранится менеджер, никогда не воссоздается) даже при переключении категорий.
РЕДАКТИРОВАТЬ: Несмотря на то, что я решил утечку памяти, мой эмулятор genymotion по-прежнему падает с тем же SIGSEGV, поэтому я думаю, что этот вопрос все еще открыт.