项目即将发版,测试人员在一台之前未测试的机器A上发现一个崩溃,而且是启动就崩溃,
关键崩溃日志还是native crash:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1
r0 00000001 r1 12c26e2c r2 70db68b8 r3 00000000
r4 130ef070 r5 f2f34900 r6 131162e0 r7 00000001
r8 131f0c00 r9 f3006b00 sl 131f0d80 fp 00000001
ip 00009568 sp d72a2360 lr 73f3ac09 pc dd6d143e cpsr 000e0030
以前看到这样的日志,一般都扔给系统组去找,但这次不一样,每次都崩溃。
1.用给测试人员的包,在测试机器A验证了下确实崩溃,但其他机器不崩溃。
2.本地自己编译了一个debug版本,在测试机器A上运行,竟然没有崩溃。
可以确定是混淆有问题了,至于为啥其他机器没问题,确实很奇怪。
3.打LOG,确定崩溃地点。--- 启动的时候运行的代码,进行二分查找。
最终确定push那个模块有问题,额外进行深入,发现是接入的Oppo模块有问题,
上网找资料和分析SDK中的代码,加混淆配置。
解决。
总结:
遇到的native crash 不要怕,尤其是必现的,最坏的情况下是对特定版本、机型移除这个模块。