TEE踩坏浮点寄存器引起SF NE

在M1.MP3版本的reboot测试中,SurfaceFlinger出现NE异常,通过GAT和E-Consulter分析,发现问题源于linker64,具体为浮点寄存器D9在传递给X1时值变为0,导致NE。经过排查,发现TEE OS可能在使用浮点运算时未正确备份寄存器,影响了应用。移除TEE OS的版本测试显示问题不再复现,解决方案是要求第三方修复浮点寄存器管理问题。
摘要由CSDN通过智能技术生成

问题背景

reboot测试,surfaceflinger 出现NE

高概率复现!M1.MP3版本

分析过程

用GAT解开db,并结合对应的symbols文件(symbols目录里的文件必须和db一致),利用工具E-Consulter分析,分析报告如下:

== 异常报告v1.7(仅供参考) ==
报告解读: MediaTek On-Line> Quick Start> E-Consulter之NE/KE分析报告解读> NE分析报告
详细描述: 从错误的地址(0x0000000000000009)读数据, 请结合崩溃线程调用栈检查相关代码
版本 : alps-mp-m1.mp3/userdebug build
发生时间: Tue Sep 27 01:48:47 CST 2016
命令行 : /system/bin/surfaceflinger
进程标识符(pid): 287, 父进程标识符(ppid): 1 (/init)
进程状态: 正在运行
优先级 : 112 (0~99: 实时进程, 100~139: 普通进程)

== 线程信息(共5个线程) ==
当前线程信息:
线程名: /system/bin/surfaceflinger, 暂停, 线程标识符(tid): 287 (主线程)
errno: 2
本地调用栈:
linker64 SymbolName::gnu_hash() <bionic/linker/linker.cpp:696>
linker64 soinfo::gnu_lookup(this=0x0000007FB592D1F8, symbol_name=0, vi=0, symbol_index=0x0000007FE75472EC) + 36 <bionic/linker/linker.cpp:546>
linker64 soinfo::find_symbol_by_name(vi=0, symbol=0x0000007FE7547380) + 32 <bionic/linker/linker.cpp:508>
linker64 operator()(global_si=0x0000007FB592D1F8) + 116 <bionic/linker/linker.cpp:744>
linker64 visit<soinfo_do_lookup(soinfo*, char const*, const version_info*, soinfo**, const soinfo_list_t&, const soinfo_list_t&, const Elf64_Sym**)::<lambda(soinfo*)> >() + 132 <bionic/linker/linked_list.h:113>
linker64 soinfo_do_lookup(si_from=0x0000007FB59109B8, name=0x0000007FB250D22D, vi=0, si_found_in=0x0000007FE7547460, symbol=0x0000007FE7547458) + 500 <bionic/linker/linker.cpp:755>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值