官方淘宝店 易迪拓培训 旧站入口
首页 > 手机设计 > 高通手机设计平台 > 各位大牛有木有遇到MSM8226 CPU取值错误的奇葩问题

各位大牛有木有遇到MSM8226 CPU取值错误的奇葩问题

05-08
如题。
本屌搬砖的公司用msm8226,最近有几个奇葩的crash,data abort。
本来很常见,可是追踪发现,user stack完全看不到。
用t32 dump PC寄存器指向的那段空间,发现正执行一个寄存器加减立即数的指令,不可能crash。
由于user space进程的crash由debugd捕捉,开始怀疑相应内存被释放了,从而map失败,看不到stack。

怀着试试看态度,在内核捕捉到data abort的时候打印user pc寄存器对应的arm指令,和T32 dump出来的对比。
奇葩出现鸟:
kernel log里边打印的东西和T32 dump出来的东西不一样!打印出来的二进制,强制用t32 反汇编,发现确实是寻址指令,确实访问非法地址!
kernel log里边打印的东西是CPU通过虚拟地址物理地址映射找到的,其中不一定通过页表,可能用cache之类的东西。
T32的内容是根据页表数据结构算的,属于软件层面的。
两者不一样,岂不是说MMU寻址选错了。
用T32的d,find查询kernel log打印出来的pc指针对应的指令,发现确实存在,但它的物理地址并不在crash的进程map的物理空间上,怀疑是别的进程!
今天又有个问题,不是这类的crash,是free的时候magic data被修改。可是T32仍然发现申请内存的末尾,没有被修改!
类似,难道MSM8226有这个bug?

小编可以给msm8226的datasheet我么,好人一生平安

好深奥,不懂,呵呵。
debug应用程序不需要那么多的东西,基本上logcat一份就够了。

希望不被忽悠

学习。

Top