web-dev-qa-db-ja.com

NDKを使用していないGenymotionエミュレータで致命的な信号11(SIGSEGV)code = 2

アプリケーションでNDKを使用していません。 GenyMotion Nexus 7エミュレーターでテストしていますが、問題を再現するのは非常に難しく、それを再現する正しい方法がまだわかりません。アプリケーションが長時間正常に動作することもあれば、使用して約30秒後にクラッシュして自動的に再起動することもあります。

編集:100%ではありませんが、genymotionエミュレータでのみ発生しますが、通常は発生しませんAndroidエミュレータ(テストを続行します)

この問題は、横長モードで大画面のサポートを追加したときに発生しました(横長で2つのフラグメントを一度に表示し、縦長で1つだけを表示し始めました(幅が720未満))。

フラグメントの1つは、(メモリ、ディスク、またはインターネットから)画像を遅延読み込みします。

私はフラグメントの動的な追加と削除に非常に慣れていないので、そこに何かがあると確信しています。

とにかく、このダンプをデコードして、クラッシュの原因を突き止めるのを手伝ってください(私は重要ではないと思うものは省略します):

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例外です。つまり、(フラグメントの1つにある)私のドローアブルマネージャーは、ドローアブルを使用してHashMapを膨らませる巨大なメモリリークがあったことがわかりました。カテゴリを切り替えても、メモリに留まります(マネージャを保持するカテゴリ選択フラグメントは再作成されないため)。

編集:メモリリークは解決しましたが、私のgenymotionエミュレーターは同じSIGSEGVでもクラッシュします。したがって、この質問はまだ開いていると思います。

27
VM4

テストされたソリューションの動作:

マニフェストでこれらの許可について言及します。

 <application        
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/CustomTheme"
        Android:allowBackup="true"           
        Android:vmSafeMode="true"       
        Android:allowClearUserData="true"
        Android:hardwareAccelerated="true" >
13
Ravind Maurya

特にGenyMotionの4.3イメージで、この問題も発生していました。 4.2.2の画像に切り替えたところ、クラッシュは発生しなくなりました。

11
Jug6ernaut

私が自分で見つけた解決策は、androidmanifest.xmlファイルの属性を変更することです

Debuggable = True
VM safe mode =True
Allow Backup = True
Allow Clear user date= True
Hardware Accelerated = True 

(私はこれをしました、そして私はこの問題を持っていません、そして私のアプリケーションは問題なく走りました、そして私はGenymotion Tooを使用しています)アプリケーションメニューで申し訳ありませんが私はこれを忘れました

4
ClubberBen