一.问题现象如图1所示:
图1 问题现象
1.根据问题现象初步分析:出现问题时epc的值为rt_spin_lock_slowlock函数中的地址,分析该函数的源代码及反汇编代码如图2和图3所示。
图2 函数源码
图3 函数汇编码
根据图1-3得出,由于函数task_blocks_on_rt_mutex返回非0值,导致函数进入BUG_ON时报出异常信息。
2.函数task_blocks_on_rt_mutex返回值存储在v0寄存器中,根据图1得出该返回值为0xffffffffffffffd3即-5,经过分析该函数的源码,该值为-EDEADLK。
二、分析过程(需要了解rt_mutex锁的工作机制)
1.分析函数task_blocks_on_rt_mutex中返