我在Google Play上有一个相当受欢迎的应用程序,最近该应用程序因libwebviewchromium.so上的某些 native 崩溃而受到攻击。所讨论的Webview没有花哨的东西,只有一个小的登录表单,其中没有滚动功能。

自然,这只会在Android 4.4以上版本(WebViews开始基于Chromium)上发生。有一个崩溃的转储:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'motorola/ghost_repw/ghost:4.4.2/KXA20.16-1.24-1.12/12:user/release-keys'
Revision: 'p300'
pid: 22986, tid: 22986
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
r0 00000000 r1 000059ca r2 00000006 r3 00000000
r4 00000006 r5 0000000b r6 000059ca r7 0000010c
r8 6015d758 r9 57735070 sl 57619830 fp 57734ee0
ip 40121384 sp bef3a088 lr 400e60bd pc 400f5068 cpsr 00060010
d0 4373746e65746e6f d1 697242746e65696c
d2 756f68732e656764 d3 69727265764f646c
d4 616f4c6c72556564 d5 43774128676e6964
d6 4373746e65746e6f d7 697242746e65696c
d8 00000000438e8000 d9 0000000043956b80
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 2e6c616e7265746e d17 746f67795a2e736f
d18 616d2e74696e4965 d19 746f67795a286e69
d20 616a2e74696e4965 d21 0a293130363a6176
d22 766c616420746109 d23 65747379732e6b69
d24 0000000000000000 d25 0000000000000000
d26 0000000000000000 d27 0000000000000000
d28 0000000000000000 d29 0000000000000000
d30 0000000000000000 d31 0000000000000000
scr 68000013

backtrace:
#00 pc 00022068 /system/lib/libc.so (tgkill+12)
#01 pc 000130b9 /system/lib/libc.so (pthread_kill+48)
#02 pc 000132cd /system/lib/libc.so (raise+10)
#03 pc 00012003 /system/lib/libc.so
#04 pc 0002191c /system/lib/libc.so (abort+4)
#05 pc 001c46b1 /system/lib/libwebviewchromium.so
#06 pc 001c1c4b /system/lib/libwebviewchromium.so
#07 pc 00196ebd /system/lib/libwebviewchromium.so
#08 pc 0018bd73 /system/lib/libwebviewchromium.so
#09 pc 0018bb8d /system/lib/libwebviewchromium.so
#10 pc 0018bc0d /system/lib/libwebviewchromium.so
#11 pc 008e6c29 /system/lib/libwebviewchromium.so
#12 pc 008e6bcd /system/lib/libwebviewchromium.so
#13 pc 001cf1ef /system/lib/libwebviewchromium.so
#14 pc 001cfcf1 /system/lib/libwebviewchromium.so
#15 pc 001cfe4f /system/lib/libwebviewchromium.so
#16 pc 001dfc57 /system/lib/libwebviewchromium.so
#17 pc 0002034c /system/lib/libdvm.so (dvmPlatformInvoke+112)
#18 pc 00050e6b /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#19 pc 000297e0 /system/lib/libdvm.so
#20 pc 00030ae8 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#21 pc 0002e180 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#22 pc 00063751 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
#23 pc 0006b713 /system/lib/libdvm.so
#24 pc 000297e0 /system/lib/libdvm.so
#25 pc 00030ae8 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
#26 pc 0002e180 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#27 pc 0006346d /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
#28 pc 0004ca37 /system/lib/libdvm.so
#29 pc 0004d0f7 /system/lib/libandroid_runtime.so
#30 pc 0004de1b /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+354)
#31 pc 0000105b /system/bin/app_process

code around pc:
400f5048 e8bd00f0 e3700a01 912fff1e e2600000
400f5058 ea006e4c e92d50f0 e3a07f43 ef000000
400f5068 e8bd50f0 e3700a01 912fff1e e2600000
400f5078 ea006e44 e92d50f0 e3a070ee ef000000
400f5088 e8bd50f0 e3700a01 912fff1e e2600000
400f5098 ea006e3c f200429a bf0080b9 f040f891
400f50a8 4001e92d f2c02a04 2a1080a5 8093f2c0
400f50b8 f2c02a20 2a408088 ea4fdb7f f1bc1c92
400f50c8 dd6c0f0a 0600e92d 0f40f1bc f500dd4a
400f50d8 f5016e80 ebae7920 ea4f0e09 ea4f5e4e
400f50e8 f50e5e5e ebbc7e20 dd3b1f9e f04fbfc4
400f50f8 ebd9090a dd35199e 0a0eeb01 0a3ff02a
400f5108 1c9eebac bfd245e1 0c09ebac f04f46e1
400f5118 f8910c00 f891f240 f921f280 f921028d
400f5128 f8da428d f1b93000 f9000901 f900028d
400f5138 f10a428d d1ee0a40 0f00f1bc f5bcd02b

code around lr:
400e609c 447b4b13 42b3e010 6a1ed10e 44784811
400e60ac ec80f7fb ea0ef00d 46224631 efd0f00e
400e60bc d00a3001 e00b2400 2b00681b 480ad1eb
400e60cc 44782403 ec6ef7fb f001e002 6804fa23
400e60dc fa20f001 46206005 bf00bd70 0003b306
400e60ec 0003b2fa 0003b2f2 0003b2ce bf7ef7ff
400e60fc 4a3e4b3d e92d447b b08b43f0 4606589c
400e610c 6823460d 930946a1 fa04f001 8000f8d0
400e611c d0482d00 f0104628 280ff88b d8444604
400e612c ffe4f7ff d1064286 4629200f e8d8f00d
400e613c d03c2800 482ee02e f7fb4478 482debb2
400e614c e0154478 d11342b0 482b6a06 f7fb4478
400e615c 4a2aec2a 46332120 a801447a f9eef013
400e616c a8012101 fd08f01a 46061c42 e011d104
400e617c 28006800 e02cd1e6 46294630 f00d4622
400e618c 1c43e914 d11e4607 f9c4f001 29046801

不幸的是,我无法在实际设备或仿真器上都复制此问题,并且用户反馈也无济于事。不知道为什么会发生这种崩溃。

我已经学会了使用NDK工具来解释堆栈跟踪,但是我仍然需要一个带有调试符号的libwebviewchromium.so版本(最好是在每个用户设备上运行的版本完全相同)。

因此,问题是:

我想念什么吗?/有人碰到过类似的东西吗?

假设我可以找到使用中的libwebviewchromium.so版本,是否可以找到带有调试符号的版本,还是需要从头开始编译它们?

谢谢!

最佳答案

这可能是由于图形内存错误引起的,因此您可以尝试使用任何-CSS webkit-transform禁用某些CSS,例如“-webkit-transform:rotation(0deg)scaleX(1)scaleY(1);”。 (如果您在GPU内存中加载了太多数据,我在iOS上也遇到了同样的错误)。

10-07 16:33