Linker加载so失败问题分析

 WeTest 导读

近期测试反馈一个问题,在旧版本微视基础上覆盖安装新版本的微视APP,首次打开拍摄页录制视频合成时高概率出现crash。

 


 

那么我们直奔主题,看看日志:

 

 

另外复现的日志中还出现如下信息:

'/data/data/com.tencent.weishi/appresArchiveExtra/res1bodydetect/bodydetect/libxnet.so: strtab out of bounds error

 

 

后经过测试,发现覆盖安装后首次使用美体功能也会出现crash,日志如下:

 

 

由于出现问题的场景都是覆盖安装首次使用,并且涉及到人体检测相关的so,似乎存在某种共同的原因。

 

因此Abort异常比起fault addr类问题更容易分析,先从前面Linker出现Abort异常的位置开始着手。

 

Linker是so链接和加载的关键,属于系统可执行文件,因此分析起来比较棘手。好在手上正好有一台刚刷完自己编译的Android AOSP的Pixel,做一些实验变得更轻松了。

出现异常的Linker代码linker_soinfo.cpp如下:

 

const char* soinfo::get_string(ElfW(Word) index) const {
 if (has_min_version(1) && (index >= strtab_size_)) {
   async_safe_fatal("%s: strtab out of bounds error; STRSZ=%zd, name=%d",
       get_realpath(), strtab_size_, index);
 }
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信