致命信号11(SIGSEGV)代码=2在使用Genymotion模拟器而不使用NDK时发生。

29

我的应用程序没有使用NDK。我正在GenyMotion Nexus 7模拟器上测试它,问题很难复现,我还没有找到正确的复现方法。有时应用程序可以长时间正常工作,有时在使用约30秒后就会崩溃并自动重启。

编辑:我不确定但似乎只在Genymotion模拟器上发生,而不是普通的Android模拟器(我将继续测试)。

当横屏时支持大屏幕(同时显示两个片段,在小于720的宽度下仅显示1个片段)后,问题开始出现。

其中一个片段懒加载图像(从内存、磁盘或互联网中获取)。

我对这种动态添加和删除片段还很陌生,所以肯定存在问题。

请帮助我解码这个dump并找出导致崩溃的原因(我会尝试省略我认为不重要的内容):

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的反馈,经过一些测试,我在安卓模拟器上也开始出现了错误。但是在安卓模拟器上,它是一个老掉牙的OutOfMemory异常。所以事实证明,我的可绘制管理器(在其中一个片段上)存在着巨大的内存泄漏,在这个管理器中,它会用可绘制对象填充一个HashMap 。只有当我实现了双面布局时,这才成为了一个问题,因为DrawableManager始终会保留在内存中(因为持有该管理器的类别选择片段永远不会重新创建),即使我切换类别也是如此。

编辑:尽管我已经解决了内存泄漏问题,我的genymotion模拟器仍然崩溃并显示相同的SIGSEGV错误,所以我想这个问题仍然是开放的。


3
Genymotion不是Android模拟器,也不是有效的测试目标。它是一个混杂着各种修改和黑科技的虚拟机,用于让Android跑起来的方法不得而知。我建议忽略它并继续进行其他方案的测试。 - Simon
你好,我遇到了同样的问题,请您看一下这个链接:https://stackoverflow.com/questions/54760308/fatal-signal-11-sigsegv-code-2-fault-addr-0x7fa4c3813c-in-tid-21198-crashly。谢谢! - Rahul
3个回答

14

测试过的解决方案可行:

在清单文件中提及这些权限:

 <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" >

1
在发布应用程序时,您能否将此留下,还是仅在开发过程中使用? - X.X_Mass_Developer
android:debuggable="true"在使用Android Studio时会出错,但在我的情况下不需要,也不需要android:hardwareAccelerated="true" - Carlo Espino
@CarloRodríguez 那时我在使用Eclipse,但在Android中,您可以根据需要删除这些权限。 - Ravind Maurya

11

我也遇到了这个问题,尤其是在GenyMotion上使用4.3版本的镜像时。我切换到4.2.2版本的镜像后就不再出现崩溃了。


我也切换到了4.2.2,自那以后就再也没有出现过SIGSEGV。 - Chin
同样的情况发生在这里。从4.3镜像切换到其他任何镜像都可以解决问题。 - Maurício Giordano
同样的问题在Genymotion 4.3 X86镜像上也存在。添加以下代码 android:vmSafeMode="true"android:hardwareAccelerated="true" 可以解决该问题。 - Aladin Q

4
我发现的解决方案是在你的 androidmanifest.xml 文件上更改一些属性。
Debuggable = True
VM safe mode =True
Allow Backup = True
Allow Clear user date= True
Hardware Accelerated = True 

我做了这个操作,没有出现问题,我的应用程序也能够正常运行,我使用的是Genymotion模拟器。在“应用程序菜单”中,抱歉我之前忘记提到了。


当您打开AndroidManifest.xml文件时,您会在底部看到菜单(清单、应用程序、权限、仪器和androidmanifest.xml)。 - ClubberBen
@VM请确认是否有效,我已编辑了我的第一个答案,我认为它会起作用。 - ClubberBen
谢谢您的建议,但我已经解决了这个问题。 - VM4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接