项目场景:
没有错,这又是一个老项目。当时框架构建时追求时尚选择了CrossWalk来代替Android Webview。。这该死的冲动!!
问题描述:
项目中集成使用了CrossWalk,因设备系统升级所有的crosswalk版本又14.+更新至23.+最后一版,多个项目出现闪退。。报错内容很简单。。。
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xba2b105c in tid 432 (Chrome_FileThre)
}
对于我这个把C跟汇编忘得99.6%的人可真是一个surprise,当即排查问题所在,然而捣鼓了大半天没有任何头绪,报错信息还仅仅是so文件中的指令,表示完全看不明白。(因为版本升级,没有办法还原之前的版本,还原后无法正常使用),一开始我想到了是不是CPU架构的问题不兼容,但是随着另外一个同版本CrossWalk的正常运行我就放弃了这个想法。。相同的版本为什么另外一个项目能正常使用呢?
处理过程:
本来想着是由于项目中某个地方的代码引起的so问题,花了半天的时间把项目进行完全的还原,删减。。最后基本把出问题的项目中代码几乎全部删除干净了,发现问题还在。。那么好的跟java代码没有关系了,开始着手Style跟插件版本号这些。。。仍然徒劳无功。。我分分钟想要放弃求助大佬了。。。。最后抱着试一下的想法又新建了一个demo来运行发现也是没有任何问题的,然后又跟之前删减后的原项目做了个对比。。这会发现了,原项目里面还留有一个so的文件夹,下面存放了所有so文件。然后我最后把这个文件夹删掉了。。。。神奇的事情发生了,好了!!!!!
代码里没有任何调用这些so的地方,我是完全删除了的。。然后我把这些so又拷贝到demo项目里面,bug真的复现了。
最终经过重重排查终于让我查到了百度的2个so跟crosswalk有兼容性问题,2个so一删。。。问题立马就没了
这个问题真的是简直了。。mark