debugging – 如何调试内核中的死锁问题
我有一个错误的内核模块,我试图修复.基本上,当此模块运行时,它将导致其他任务挂起超过120秒.由于几乎所有挂起的任务都在等待mm-> mmap_sem或某些文件系统锁(i_node-> i_mutex)我怀疑它与此模块有关,并没有抓住mmap_sem锁和一些文件 – 系统级别锁定(如inote-> i_mutex)按顺序,可能会导致一些死锁问题.由于我的模块不会尝试直接获取这些锁,我认为这是我调用的一些函数来抓住这些锁.现在我想弄清楚我的模块中哪些函数调用导致问题.
但是,由于以下原因,我很难调试它: >我不知道挂起的任务究竟要抓住哪个锁.我得到了挂起任务的调用跟踪,并知道它挂起的位置.内核还给我一些信息,如: 所以我的问题如下: >我可以从调用跟踪中获取调用跟踪中函数的参数,以便确切了解任务正在尝试抓取哪个锁. 非常感谢你! 解决方法
让我尝试.
1)尝试KGDB 2)你的意思是一个挂起的过程? 3)尝试使用lsof包. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |