安卓崩溃/system/lib/libhwui.so
Posted
技术标签:
【中文标题】安卓崩溃/system/lib/libhwui.so【英文标题】:android crash /system/lib/libhwui.so 【发布时间】:2013-11-06 00:41:30 【问题描述】:我有时会遇到崩溃,似乎是 jni 崩溃,但我的应用程序没有任何 jni 代码。它是一个图形应用程序,会加载一些图片。
谁能告诉我如何找到问题。 libhwui.so 是什么。
I/DEBUG ( 141): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 000000e8
I/DEBUG ( 141): r0 ffffffff r1 000000e8 r2 00000000 r3 00000000
I/DEBUG ( 141): r4 ffffffff r5 000000e8 r6 018fea18 r7 018fe9c8
I/DEBUG ( 141): r8 40baa190 r9 018fea40 10 0000001c fp 0000001c
I/DEBUG ( 141): ip 40bab590 sp be818c98 lr 4005510c pc 4005510c cpsr 68000010
I/DEBUG ( 141): d0 4300000043000000 d1 44d0000043000000
I/DEBUG ( 141): d2 41d0000000000040 d3 4000000000000002
I/DEBUG ( 141): d4 4000000040200000 d5 4000000000000002
I/DEBUG ( 141): d6 4000000040000000 d7 0000000000000000
I/DEBUG ( 141): d8 43e6000040000000 d9 403c800000000000
I/DEBUG ( 141): d10 403c800000000000 d11 4038000000000000
I/DEBUG ( 141): d12 447a000042363498 d13 3f6ed2573c23d700
I/DEBUG ( 141): d14 3f4959923ed2d2d3 d15 00000000c1600000
I/DEBUG ( 141): d16 c000000000000000 d17 c000000000000000
I/DEBUG ( 141): d18 4000000000000000 d19 0000000000000000
I/DEBUG ( 141): d20 3ff0000000000000 d21 8000000000000000
I/DEBUG ( 141): d22 c000000000000000 d23 0000000000000000
I/DEBUG ( 141): d24 0000000000000000 d25 3fca515880000000
I/DEBUG ( 141): d26 0000000000000000 d27 3fca515880000000
I/DEBUG ( 141): d28 0000000000000000 d29 3ff0000000000000
I/DEBUG ( 141): d30 0000000000000000 d31 3ff0000000000000
I/DEBUG ( 141): scr 68000013
I/DEBUG ( 141):
I/DEBUG ( 141): #00 pc 0000510c /system/lib/libcutils.so (android_atomic_add)
I/DEBUG ( 141): #01 pc 0000ae3e /system/lib/libhwui.so
I/DEBUG ( 141): #02 pc 0000ae4e /system/lib/libhwui.so
I/DEBUG ( 141): #03 pc 000162f2 /system/lib/libhwui.so
I/DEBUG ( 141): #04 pc 000163a6 /system/lib/libhwui.so
I/DEBUG ( 141): #05 pc 000226a0 /system/lib/libutils.so (_ZN7android10VectorImpl5_growEjj)
I/DEBUG ( 141): #06 pc 000226d2 /system/lib/libutils.so (_ZN7android10VectorImpl8insertAtEPKvjj)
I/DEBUG ( 141): #07 pc 0002280e /system/lib/libutils.so (_ZN7android16SortedVectorImpl3addEPKv)
I/DEBUG ( 141): #08 pc 00016874 /system/lib/libhwui.so
I/DEBUG ( 141):
I/DEBUG ( 141): code around pc:
I/DEBUG ( 141): 400550ec e1853f92 e3530000 1afffffa e8bd8070 .?....S.....p...
I/DEBUG ( 141): 400550fc e92d4070 e1a04000 e1a05001 ebffffd1 p@-..@...P......
I/DEBUG ( 141): 4005510c e1950f9f e0802004 e1853f92 e3530000 ..... ...?....S.
I/DEBUG ( 141): 4005511c 1afffffa e8bd8070 e1a01000 e3e00000 ....p...........
I/DEBUG ( 141): 4005512c eafffff2 e1a01000 e3a00001 eaffffef ................
I/DEBUG ( 141):
I/DEBUG ( 141): stack:
I/DEBUG ( 141): be818c58 01887204 [heap]
I/DEBUG ( 141): be818c5c be818db8 [stack]
I/DEBUG ( 141): be818c60 00000000
I/DEBUG ( 141): be818c64 00000002
I/DEBUG ( 141): be818c68 00000368
I/DEBUG ( 141): be818c6c 00000000
I/DEBUG ( 141): be818c70 00000310
I/DEBUG ( 141): be818c74 00000000
I/DEBUG ( 141): be818c78 014d84e0 [heap]
I/DEBUG ( 141): be818c7c 0000001c
I/DEBUG ( 141): be818c80 00000310
I/DEBUG ( 141): be818c84 0000001c
I/DEBUG ( 141): be818c88 00001906
I/DEBUG ( 141): be818c8c 400cee59 /system/lib/libc.so
I/DEBUG ( 141): be818c90 df0027ad
I/DEBUG ( 141): be818c94 00000000
I/DEBUG ( 141): #00 be818c98 000000e8
I/DEBUG ( 141): be818c9c 0000004d
I/DEBUG ( 141): be818ca0 018fea18 [heap]
I/DEBUG ( 141): be818ca4 40b92e41 /system/lib/libhwui.so
I/DEBUG ( 141): #01 be818ca8 01856aa8 [heap]
I/DEBUG ( 141): be818cac 40b92e53 /system/lib/libhwui.so
我看到了一次崩溃
I/DEBUG (10037): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
I/DEBUG (10037): r0 deadbaad r1 00000001 r2 40000000 r3 00000000
I/DEBUG (10037): r4 00000000 r5 00000027 r6 400f34c8 r7 401025d8
I/DEBUG (10037): r8 0146dc68 r9 40102598 10 5bdf7b8c fp 5bdf7c24
I/DEBUG (10037): ip ffffffff sp 5bdf79e8 lr 400d45c9 pc 400d0958 cpsr 60000030
I/DEBUG (10037): d0 72656c69706d6f43 d1 726f7470008ed744
I/DEBUG (10037): d2 617369646f6e5f57 d3 6f6c6f685f656c50
I/DEBUG (10037): d4 9933333399333333 d5 9933333399333333
I/DEBUG (10037): d6 00d2aff099333333 d7 000000434e5f30de
I/DEBUG (10037): d8 0000000000000000 d9 0000000000000000
I/DEBUG (10037): d10 0000000000000000 d11 0000000000000000
I/DEBUG (10037): d12 0000000000000000 d13 0000000000000000
I/DEBUG (10037): d14 0000000000000000 d15 0000000000000000
I/DEBUG (10037): d16 0000000700000001 d17 40c4400000000000
I/DEBUG (10037): d18 4146605000000000 d19 bfb1be5a93a83e1d
I/DEBUG (10037): d20 3f1155e54e7e8408 d21 bebbbc6c1a570a20
I/DEBUG (10037): d22 3ff0000000000000 d23 3fede16b9c24a98f
I/DEBUG (10037): d24 3e66376972bea4d0 d25 3fc39a09d078c69f
I/DEBUG (10037): d26 0000000000000000 d27 0000000000000000
I/DEBUG (10037): d28 0000000000000000 d29 0000000000000000
I/DEBUG (10037): d30 0000000000000000 d31 0000000000000000
I/DEBUG (10037): scr 80000012
I/DEBUG (10037):
D/ti_hwc ( 142): [handle_uevents] :: Uevent : change@/devices/platform/omap/omap_i2c.1/i2c-1/1-0049/twl6030_bci/power_supply/battery
D/PowerManagerService( 292): mPowerState = SCREEN_BRIGHT_BIT SCREEN_ON_BIT
I/DEBUG (10037): #00 pc 00017958 /system/lib/libc.so
I/DEBUG (10037): #01 pc 000137e2 /system/lib/libc.so
I/DEBUG (10037): #02 pc 00015b20 /system/lib/libc.so (dlfree)
I/DEBUG (10037): #03 pc 00016198 /system/lib/libc.so (free)
I/DEBUG (10037): #04 pc 000009bc /system/lib/libstdc++.so (_ZdlPvRKSt9nothrow_t)
I/DEBUG (10037): #05 pc 00016afe /system/lib/libhwui.so
I/DEBUG (10037): #06 pc 00016b10 /system/lib/libhwui.so
I/DEBUG (10037): #07 pc 0001640a /system/lib/libhwui.so
I/DEBUG (10037): #08 pc 00016bc4 /system/lib/libhwui.so
I/DEBUG (10037): #09 pc 0000d752 /system/lib/libhwui.so
I/DEBUG (10037): #10 pc 0000d8e0 /system/lib/libhwui.so (_ZN7android10uirenderer11DisplayListD1Ev)
I/DEBUG (10037): #11 pc 0005e896 /system/lib/libandroid_runtime.so
I/DEBUG (10037): #12 pc 0001edb0 /system/lib/libdvm.so (dvmPlatformInvoke)
I/DEBUG (10037): #13 pc 000590f4 /system/lib/libdvm.so (_Z16dvmCallJNIMethodPKjP6JValuePK6MethodP6Thread)
I/DEBUG (10037):
I/DEBUG (10037): code around pc:
I/DEBUG (10037): 400d0938 4623b15c 2c006824 e026d1fb b12368db \.#F$h.,..&..h#.
I/DEBUG (10037): 400d0948 21014a17 6011447a 48124798 24002527 .J.!zD.`.G.H'%.$
I/DEBUG (10037): 400d0958 f7f47005 2106eeb4 ef50f7f5 460aa901 .p.....!..P....F
I/DEBUG (10037): 400d0968 f04f2006 94015380 94029303 eb0cf7f5 . O..S..........
I/DEBUG (10037): 400d0978 4622a905 f7f52002 f7f4eb16 2106eea0 .."F. .........!
I/DEBUG (10037):
I/DEBUG (10037): code around lr:
I/DEBUG (10037): 400d45a8 41f0e92d 46804c0c 447c2600 68a56824 -..A.L.F.&|D$h.h
I/DEBUG (10037): 400d45b8 e0076867 300cf9b5 dd022b00 47c04628 gh.....0.+..(F.G
I/DEBUG (10037): 400d45c8 35544306 37fff117 6824d5f4 d1ee2c00 .CT5...7..$h.,..
I/DEBUG (10037): 400d45d8 e8bd4630 bf0081f0 00028f96 41f0e92d 0F..........-..A
I/DEBUG (10037): 400d45e8 fb01b086 9004f602 461f4815 4615460c .........H.F.F.F
I/DEBUG (10037):
I/DEBUG (10037): memory map around addr deadbaad:
I/DEBUG (10037): be7f9000-be81a000 [stack]
I/DEBUG (10037): (no map for address)
I/DEBUG (10037): ffff0000-ffff1000 [vectors]
I/DEBUG (10037):
I/DEBUG (10037): stack:
I/DEBUG (10037): 5bdf79a8 00000001
I/DEBUG (10037): 5bdf79ac 5bdf79e8
I/DEBUG (10037): 5bdf79b0 400fd840 /system/lib/libc.so
I/DEBUG (10037): 5bdf79b4 0000000c
I/DEBUG (10037): 5bdf79b8 400fd7d4 /system/lib/libc.so
I/DEBUG (10037): 5bdf79bc 401028c8
I/DEBUG (10037): 5bdf79c0 00000000
I/DEBUG (10037): 5bdf79c4 400d45c9 /system/lib/libc.so
I/DEBUG (10037): 5bdf79c8 00000000
I/DEBUG (10037): 5bdf79cc 5bdf79fc
I/DEBUG (10037): 5bdf79d0 400f34c8 /system/lib/libc.so
I/DEBUG (10037): 5bdf79d4 401025d8
I/DEBUG (10037): 5bdf79d8 0146dc68 [heap]
I/DEBUG (10037): 5bdf79dc 400d3735 /system/lib/libc.so
I/DEBUG (10037): 5bdf79e0 df0027ad
I/DEBUG (10037): 5bdf79e4 00000000
I/DEBUG (10037): #00 5bdf79e8 5bdf79e4
I/DEBUG (10037): 5bdf79ec 00000001
I/DEBUG (10037): 5bdf79f0 400f34ac /system/lib/libc.so
I/DEBUG (10037): 5bdf79f4 00000005
I/DEBUG (10037): 5bdf79f8 5bdf7a14
I/DEBUG (10037): 5bdf79fc fffffbdf
I/DEBUG (10037): 5bdf7a00 5bdf7a14
I/DEBUG (10037): 5bdf7a04 5bdf7a14
I/DEBUG (10037): 5bdf7a08 400f6a64 /system/lib/libc.so
I/DEBUG (10037): 5bdf7a0c 400cc7e7 /system/lib/libc.so
I/DEBUG (10037): #01 5bdf7a10 5bdf7ae8
I/DEBUG (10037): 5bdf7a14 20404040
I/DEBUG (10037): 5bdf7a18 524f4241 /dev/ashmem/dalvik-mark-stack (deleted)
I/DEBUG (10037): 5bdf7a1c 474e4954 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (10037): 5bdf7a20 4e49203a /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (10037): 5bdf7a24 494c4156 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (10037): 5bdf7a28 45482044 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (10037): 5bdf7a2c 41205041 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (10037): 5bdf7a30 45524444 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (10037): 5bdf7a34 49205353 /dev/ashmem/dalvik-heap (deleted)
I/DEBUG (10037): 5bdf7a38 6c64204e
I/DEBUG (10037): 5bdf7a3c 65657266
I/DEBUG (10037): 5bdf7a40 01417700 [heap]
I/DEBUG (10037): 5bdf7a44 4034d558 /system/lib/libcrypto.so
I/DEBUG (10037): 5bdf7a48 013648c8 [heap]
I/DEBUG (10037): 5bdf7a4c 401025c0
I/DEBUG (10037): 5bdf7a50 00000068
I/DEBUG (10037): 5bdf7a54 40102588
I/DEBUG (10037): 5bdf7a58 014186c8 [heap]
I/DEBUG (10037): 5bdf7a5c 40102588
I/DEBUG (10037): 5bdf7a60 40354c80 /system/lib/libcrypto.so
I/DEBUG (10037): 5bdf7a64 400ceb39 /system/lib/libc.so
I/DEBUG (10037): 5bdf7a68 409054aa /system/lib/libdvm.so
I/DEBUG (10037): 5bdf7a6c 4034d558 /system/lib/libcrypto.so
I/DEBUG (10037): 5bdf7a70 5bdf7b20
I/DEBUG (10037): 5bdf7a74 00000000
I/DEBUG (10037): 5bdf7a78 5bdf7b28
I/DEBUG (10037): 5bdf7a7c 40354c80 /system/lib/libcrypto.so
I/DEBUG (10037): 5bdf7a80 40354c80 /system/lib/libcrypto.so
I/DEBUG (10037): 5bdf7a84 400cf19b /system/lib/libc.so
I/DEBUG (10037): 5bdf7a88 409054aa /system/lib/libdvm.so
I/DEBUG (10037): 5bdf7a8c 402c79df /system/lib/libcrypto.so
I/DEBUG (10037): 5bdf7a90 5bdf7b40
I/DEBUG (10037): 5bdf7a94 402cacf7 /system/lib/libcrypto.so
I/DEBUG (10037): 5bdf7a98 01364880 [heap]
I/DEBUG (10037): 5bdf7a9c 40102608
I/DEBUG (10037): 5bdf7aa0 013b5e00 [heap]
I/DEBUG (10037): 5bdf7aa4 401025c0
I/DEBUG (10037): 5bdf7aa8 00000068
I/DEBUG (10037): 5bdf7aac 401025a0
I/DEBUG (10037): 5bdf7ab0 409054aa /system/lib/libdvm.so
I/DEBUG (10037): 5bdf7ab4 401025a8
I/DEBUG (10037): 5bdf7ab8 5bdf7b68
I/DEBUG (10037): 5bdf7abc 0145c410 [heap]
I/DEBUG (10037): 5bdf7ac0 00000009
I/DEBUG (10037): 5bdf7ac4 40102558
I/DEBUG (10037): 5bdf7ac8 00000000
I/DEBUG (10037): 5bdf7acc 400cdcd5 /system/lib/libc.so
I/DEBUG (10037): 5bdf7ad0 013c2758 [heap]
I/DEBUG (10037): 5bdf7ad4 40102590
I/DEBUG (10037): 5bdf7ad8 00000038
I/DEBUG (10037): 5bdf7adc 40102534
I/DEBUG (10037): 5bdf7ae0 0145f8d8 [heap]
I/DEBUG (10037): 5bdf7ae4 40102580
I/DEBUG (10037): 5bdf7ae8 0146c5d0 [heap]
I/DEBUG (10037): 5bdf7aec 0146c5f0 [heap]
I/DEBUG (10037): 5bdf7af0 00000001
I/DEBUG (10037): 5bdf7af4 40102558
I/DEBUG (10037): 5bdf7af8 5bdf7b8c
I/DEBUG (10037): 5bdf7afc 400cdcd5 /system/lib/libc.so
I/DEBUG (10037): 5bdf7b00 012fb8d8 [heap]
I/DEBUG (10037): 5bdf7b04 012fb928 [heap]
I/DEBUG (10037): 5bdf7b08 01479db0 [heap]
I/DEBUG (10037): 5bdf7b0c 00000035
I/DEBUG (10037): 5bdf7b10 011a31e4 [heap]
I/DEBUG (10037): 5bdf7b14 1c5bddbe
I/DEBUG (10037): 5bdf7b18 01479d68 [heap]
I/DEBUG (10037): 5bdf7b1c 01479de8 [heap]
I/DEBUG (10037): 5bdf7b20 00000080
I/DEBUG (10037): 5bdf7b24 400ceb25 /system/lib/libc.so
【问题讨论】:
听起来像是硬件层的问题。你在 AnimationListener 中使用setLayerType(LAYER_TYPE_HARDWARE, null)
吗?
我用过 PullToRefreshListView ,我在它的代码 ViewCompat.setLayerType(mRefreshableViewWrapper, value != 0 ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE);
中找到了这个
这是在什么操作系统上发生的?它是 4.0.x 设备吗?
是的,它是android 4.0.4。
【参考方案1】:
我知道这是一篇旧帖子,但我长期以来一直在为类似的崩溃而苦苦挣扎,最近才找到根本原因。以下是关于我的崩溃的更多花絮:
崩溃可能发生在 libhwui.so、libskia.so、libutils.so 或 libc.so 中 应用未使用 NDK 与设备的强相关性。三星 S6/S7 和 Nexus 5 有很多实例。从未见过旧京瓷的坠机事故由于我的应用也没有本机代码,因此堆栈转储/墓碑文件没有引用我的任何代码。通过临时测试,我将问题的根源缩小到应用程序中的自定义 ProgressBar。
ProgressBar 在后台利用了 TimerTask!谢天谢地,我最近在研究其他东西时碰到了this post。
将代码更改为处理程序,此后再也没有看到崩溃!希望这对其他人有帮助。
【讨论】:
投反对票的人能给出解释吗?开发人员经常像我一样从其他人那里继承代码,所以我觉得这是对世界的有效贡献 链接失效了,请问您做了什么处理 抱歉链接现在失效了。基本上你实例化 Handler 和 Runnable 对象。在 Runnables 运行命令中执行您的任务,然后 postDelayed(this) 到 UX 对象。这是另一个例子。 medium.com/@dnkilic/… 这是working link。【参考方案2】:我记得看到过这样的崩溃并阅读了有关 4.0.x 的错误,特别是删除 AnimationListener (onAnimationEnd()) 中的硬件层会导致这种崩溃。解决方案是将层转换发布为 Runnable。例如:
@Override
public void onAnimationEnd (Animation animation)
//This will cause a crash
setLayerType(LAYER_TYPE_NONE, null);
@Override
public void onAnimationEnd (Animation animation)
//This will work successfully
post(new Runnable()
@Override
public void run ()
setLayerType(LAYER_TYPE_NONE, null);
【讨论】:
谢谢,如果这个崩溃是由 setLayerType 引起的,我认为这是一个Android-PullToRefresh 错误,但我没有时间修复它。 可能是。没时间修?它是开源的;如果 layerType == LAYER_TYPE_NONE 将 ViewCompat.setLayerType() 方法更改为可运行文件应该很简单(或者您可以对所有图层类型执行此操作) 是的,我没有仔细阅读代码,我不知道它会导致一些其他错误。你的意思是如果我将ViewCompat.setLayerType(mRefreshableViewWrapper, value != 0 ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE);
更改为ViewCompat.setLayerType(View.LAYER_TYPE_NONE);
会解决这个问题吗?
不,不完全是。如果你不确定发生了什么,你可能是对的,你不应该搞砸它,但本质上,从硬件层到无层对 setLayerType 的调用应该作为可运行文件发布,而不是直接在 onAnimationEnd() 中发布。
我又崩溃了,但是堆栈和之前的有一些不同,是不是同样的问题?我已经提出了崩溃问题。以上是关于安卓崩溃/system/lib/libhwui.so的主要内容,如果未能解决你的问题,请参考以下文章