android native crash by lib64/libhwui.so ,以及如何定位问题

android native crash by lib64/libhwui.so , and how to locate the problem

就在我用canvas和位图画线和点的时候。

它总是会在绘图的 serval 分钟内发生

[模拟器是 Pixel 4 android 12 beta]

代码:

Rooted: 'No'
API level: '30'
OS version: '11'
Kernel version: 'Linux version 4.14.228-g609f9e512cd4-ab7337579 #1 SMP PREEMPT Wed May 5 05:16:48 UTC 2021 (aarch64)'
ABI list: 'arm64-v8a,armeabi-v7a,armeabi'
Manufacturer: 'Google'
Brand: 'google'
Model: 'Pixel 4'
Build fingerprint: 'google/flame/flame:S/SPB2.210513.011/7465093:user/release-keys'
ABI: 'arm64'
pid: 27941, tid: 28387, name: Thread-173  >>> com.xx.app <<<
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x7c0002590c
    x0  b400007c00025904  x1  b400007cddcc3d48  x2  0000007ba821ab50  x3  0000007ba821aac0
    x4  0000007ba821ab40  x5  0000000000000004  x6  0000007ba821b888  x7  aaaaaaaaaaaaaaab
    x8  0000007ba821a600  x9  b400007bddcac3c4  x10 0000007e6b84a000  x11 0000007e6ba91060
    x12 0000000000000034  x13 0000007e6ba28cac  x14 0000000000000000  x15 0000000000000000
    x16 0000007e6c024be8  x17 0000007e6a5f7c20  x18 0000007aef7ec000  x19 0000007ba821bf10
    x20 0000007ba821bd90  x21 0000007ba821a608  x22 0000000000000005  x23 0000000000000000
    x24 b400007bddcb6320  x25 0000007ba821e000  x26 b400007bddcac3c0  x27 0000000200000004
    x28 0000007ba821ab50  x29 0000007ba821a5b0
    sp  0000007ba821a5b0  lr  0000007e6bc5bb04  pc  0000007e6bd38e10

backtrace:
    #00 pc 0000000000538e10  /system/lib64/libhwui.so
    #01 pc 000000000045bb04  /system/lib64/libhwui.so
    #02 pc 000000000046b918  /system/lib64/libhwui.so
    #03 pc 000000000046b2dc  /system/lib64/libhwui.so
    #04 pc 000000000030cea4  /system/lib64/libhwui.so
    #05 pc 000000000032c170  /system/lib64/libhwui.so
    #06 pc 00000000002d5f18  /system/lib64/libhwui.so
    #07 pc 00000000003102d0  /system/lib64/libhwui.so
    #08 pc 00000000003bc3b4  /system/lib64/libhwui.so
    #09 pc 00000000003bbcb0  /system/lib64/libhwui.so
    #10 pc 000000000047efd4  /system/lib64/libhwui.so
    #11 pc 00000000001610a8  /system/framework/arm64/boot-framework.oat

logcat:
--------- tail end of log main (/system/bin/logcat -b main -d -v threadtime -t 200 --pid 27941 *:D)

可能是画线造成的。

我添加同步并修复它。代码如下:

synchronized(mCanvas) {
    mCanvas.drawText('')
    postInvalidate()
}