发布时间:2014-04-08 21:54:37
根据 内核调用链提示的信息,走查代码,发现缺页异常时,获取mmap_sem信号量的时候,没有获取成功,然后主动调用schedule放弃cpu。也就是说app中的多数任务在缺页异常时,获取mmap_sem信号量失败,导致大多数任务都被阻塞在mmap_sem信号量上。从代码上看是请求mmap_sem信号量失败,但是什么情景下会出现这种现象,为什么会出现这种现象暂时不清楚。跟同事讨论,觉得应该是个信号量死锁问题。
如果是信号量死锁问题,那么当前系统必须满足三个条件:
1)高优先级任务抢占中优先级任务,并申请mmap_semp信号量
2)存在中优先级的死循环任务,将低优先级级任务压制,导致低优先级任务得不到调度
3)存在低优先级级任务占用mmap_semp信号量......【阅读全文】