首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在/dev/ashmem/dalvik-jit-code-cache处发生本机崩溃

在/dev/ashmem/dalvik-jit-code-cache处发生本机崩溃
EN

Stack Overflow用户
提问于 2015-04-10 01:51:21
回答 1查看 4.7K关注 0票数 3

我的安卓游戏GeoGuess (https://play.google.com/store/apps/details?id=uk.co.quinny898.game.geoguess)的本机崩溃导致了很多设备的崩溃。

这都是Java,所以我不明白为什么会发生这种崩溃。崩溃是在34个独特的设备上(而且还在增加),并且确实给用户带来了问题(它似乎是在发布时)

堆栈跟踪如下:

代码语言:javascript
复制
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/serranoltexx/serranolte:4.4.2/KOT49H/I9195XXUCNH5:user/release-keys'
Revision: '5'
pid: 23657, tid: 23704, name: AsyncTask #1 >>> uk.co.quinny898.game.geoguess <<<
signal 16 (SIGSTKFLT), code -6 (SI_TKILL), fault addr --------
r0 42049ee8 r1 00000000 r2 663c69c3 r3 00000000
r4 622a880e r5 64489e8c r6 6447ca98 r7 000020f4
r8 417bbf80 r9 622a8806 sl 00000000 fp 42b5f278
ip 65c49fec sp 64861c40 lr 00000000 pc 663c69d8 cpsr 600d0030
d0 0000000000000000 d1 0000000000000000
d2 0000000000000000 d3 0000000000000000
d4 0000000000000000 d5 0000000000000000
d6 0000000000000000 d7 4140000000000000
d8 0000000000000000 d9 0000000000000000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 6c2f6176616a4c5b d17 64696f562f676e61
d18 577fd198577fd160 d19 577fd208577fd1d0
d20 577fd278577fd240 d21 579b81c0577fd2b0
d22 579b8230579b81f8 d23 579b82a0579b8268
d24 be5777a5d80dadae d25 3cc135bdbf311355
d26 3cc135bdbd16946f d27 3cc135bdb6c717bc
d28 3ff0000000000000 d29 bef375cbdb605373
d30 be48c28772093484 d31 3fd5555555555563
scr 20000010

backtrace:
#00 pc 0000e9d8 /dev/ashmem/dalvik-jit-code-cache (deleted)

code around pc:
663c69b8 5897607c 65ce796c f85f0048 68010008 
663c69c8 60013101 68a86829 f8d0b120 29001140 
663c69d8 e001d0fa e0026029 e0056029 f8dfde00 
663c69e8 6ef1003c 1c2d4788 4300e000 47806e70 
663c69f8 622a8816 4300e000 47806e70 622a87b4 
663c6a08 00000001 00000001 00000000 57be7128 
663c6a18 002d0102 00000001 00000000 622a880e 
663c6a28 65ce7970 f85f0030 68010008 60013101 
663c6a38 68696928 f2c04288 1c2d8007 4300e000 
663c6a48 47806e70 638d5004 f950e000 47806e70 
663c6a58 638d5010 00000002 00000000 00000000 
663c6a68 57c2e1f0 000a0101 00000001 00000000 
663c6a78 65ce7974 f85f00bc 68010008 60013101 
663c6a88 10fcf8df b1386828 f8df6800 428820f0 
663c6a98 8002f000 b3984790 f8df6829 b39120d0 
663c6aa8 429a680b 8009f040 8000f8d5 4008f8d8 

code around lr:
00000000 ffffffff ffffffff ffffffff ffffffff 
00000010 ffffffff ffffffff ffffffff ffffffff 
00000020 ffffffff ffffffff ffffffff ffffffff 
00000030 ffffffff ffffffff ffffffff ffffffff 
00000040 ffffffff ffffffff ffffffff ffffffff 
00000050 ffffffff ffffffff ffffffff ffffffff 
00000060 ffffffff ffffffff ffffffff ffffffff 
00000070 ffffffff ffffffff ffffffff ffffffff 
00000080 ffffffff ffffffff ffffffff ffffffff 
00000090 ffffffff ffffffff ffffffff ffffffff 
000000a0 ffffffff ffffffff ffffffff ffffffff 
000000b0 ffffffff ffffffff ffffffff ffffffff 
000000c0 ffffffff ffffffff ffffffff ffffffff 
000000d0 ffffffff ffffffff ffffffff ffffffff 
000000e0 ffffffff ffffffff ffffffff ffffffff 
000000f0 ffffffff ffffffff ffffffff ffffffff 

虽然位置和指纹有明显的变化。

它也不局限于Android版本,4.3和4.4都有报道

报告它的设备如下所示:

代码语言:javascript
复制
Xperia SP (C5303)   2   2.2%
LG Optimus L9 II (l9ii) 1   1.1%
Galaxy S3 (d2vmu)   1   1.1%
Galaxy S4 Mini (serranoltebmc)  2   2.2%
Galaxy S4 Active (jactivelteatt)    1   1.1%
Moto X (ghost)  6   6.6%
Droid Ultra (obake) 1   1.1%
Galaxy S3 (d2att)   1   1.1%
LG Optimus G (geehrc)   1   1.1%
Galaxy S4 Mini (serrano3g)  1   1.1%
Droid Mini (obakem) 1   1.1%
HTC One mini (htc_m4)   1   1.1%
Galaxy Express2 (wilcoxlte) 1   1.1%
Galaxy S4 (jfltespr)    1   1.1%
Galaxy S4 Mini (serranolte) 9   9.9%
Galaxy S4 (ks01lte) 2   2.2%
Galaxy S3 (d2vzw)   1   1.1%
Galaxy S4 (jfltevzw)    9   9.9%
Galaxy S4 (jfltecan)    1   1.1%
Galaxy S3 (d2usc)   1   1.1%
Galaxy S4 (jflteatt)    7   7.7%
Galaxy S4 Mini (serranoltevzw)  3   3.3%
HTC One (m7)    6   6.6%
Galaxy S3 (d2spr)   2   2.2%
Galaxy Note3 (hltecan)  1   1.1%
Xperia Z (C6603)    8   8.8%
Galaxy S4 Mini (serranolteusc)  3   3.3%
Galaxy Tab3 7.0 (lt02ltespr)    1   1.1%
Galaxy Note3 (hltevzw)  3   3.3%
Galaxy S4 (jflte)   6   6.6%
DROID RAZR M (scorpion_mini)    1   1.1%
Xperia Tablet Z (SGP321)    1   1.1%
Galaxy S4 (jflterefreshspr) 3   3.3%
Galaxy S4 (jfltetmo)    2   2.2%

这是我能解决的问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-10 02:32:20

Dalvik VM在某些情况下会抛出SIGSTKFLT。您可以看到代码herehere就是一个这样的调用点。我们的目标是从debuggerd的旋转线程中获取堆栈跟踪,这样您就可以在logcat输出中看到它。(这比Android现在拥有的漂亮的堆栈展开代码更早,Dalvik在unwinder改进之前进入了低维护模式,所以它继续使用这种有点粗糙的机制。)

您应该会在崩溃上方看到一些诊断信息,这些信息反映线程正在旋转--在logcat输出中向上滚动,看看您找到了什么。

JIT代码缓存中的堆栈跟踪表明,在信号到达时,线程正在运行JIT编译的代码。换句话说,这是一个VM bug。

您可能会看到一个讨论了一点in this questionbug 58726实例。该bug的特定情况应该已经在4.4.2版本中修复,但也可能存在具有类似故障特征的不同bug。基本的问题是OEM增强出了问题……特别要注意的是,您还没有在Google Nexus设备上看到任何故障。(我认为你清单中的所有设备都是基于高通芯片的,这会将矛头指向它们。再来一次。)

正如我在回答另一个问题时指出的,解决方法本质上是取消优化代码,这样它就不会在JIT中命中错误的路径。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29545557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档