安卓崩溃/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的主要内容,如果未能解决你的问题,请参考以下文章

哪里可以找到安卓崩溃历史

安卓 12 崩溃。华为服务

安卓。 charAt (setSelection) 中的奇怪崩溃

安卓崩溃/system/lib/libhwui.so

安卓设备上的 GCM 和应用程序崩溃

在flutter中释放apk安卓程序在启动时崩溃