qzh: ask any question in this page, I will response to you.
do_page_fault() #2: sending SIGSEGV to linux_stb for invalid read access from
00000000 (epc == 00000000, ra == 00000000)
因为缺少正确的$ra,linux gdb也无法显示调用栈。
可能的原因很多,比如该..
很多时候,内核oops还是很好处理的,因为可以看到当时的函数调用栈。objdump -DS vmlinux,配合epc(程序指针)可以定位情况发生时的代码位置。有些调试器,支持断点地址设置,可以直接显示问题发生时的代码位置。
..
一个死锁问题,费了多天的时间。中间为了寻找通用的解决办法,整合各种知识和技巧。
最后发现仅是一个计数问题。然而找到问题根源的时候,却也莫名的舒畅。这大概是年轻时候总能对程序生活充满热情的原因之一吧..