免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1865 | 回复: 1
打印 上一主题 下一主题

[其他] 大概是死锁的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-17 16:55 |只看该作者 |倒序浏览
本帖最后由 fei1700 于 2013-07-09 21:31 编辑

应该是在card存储设备driver中碰到死锁问题了(flash和card都走这一个控制器),问题出现后界面无响应,命令无响应,ls,ps等,终端还是能响应,可中断,card driver里一般用的都是可中断的锁
我有在mutex lock,claim_xxx_host,lock_page里进入该函数时获取jiffies,然后在等待for退出时如果等待时间超过5秒就打印,但是一个打印都没有(能中断,jiffies应该会更新,这么打印有用的吧?)
这样能排除不是这3个锁死造成的问题吗?
什么地方锁住了会导致ps,top这些命令都无响应的?

论坛徽章:
0
2 [报告]
发表于 2011-10-18 20:30 |只看该作者
不仅是没人回答,连看的人都少

在mutex,claim host里打印应该是有效的,没有打印就是没塞在那里
lock_page打印的地方不对,我改在sync_page里把io_schedule改成了io_schedule_timeout,此时把我的块设备request打印出来,发现一直没有处理request,用blk_peek_request看,设备和req一直都是同一个,那么就是没有正常唤醒处理线程,然后问题就好查了

mutex打印出现后,因为我打印的是所有mutex超时5秒的情况,所以把struct mutex*的值打印出来,才发现根本不是card driver里的,查system.map才发现是binder_lock的
那么就确实可以在这些锁里加打印来查死锁或长时间锁的问题了。而不用在每个具体用到锁的地方加timer释放来查

ps塞住应该是ps前有调用块设备请求的函数,所以塞了,这个在加打印后,我敲ps发现有调用,虽然不知道是哪里的调用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP