mysql soft lockup_解决类似 BUG: soft lockup - CPU#2 stuck for 67s! 问题的思路

[虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。这里讲述在没有ARC的情况下,如何使用Instruments来查找程

编写内核程序,出现soft lockup错误是再常见不过了,类似BUG: soft lockup - CPU#2 stuck for 67s!。

刚开始调试内核时,出现这样的错误,往往两眼一抹黑,不知道该如何下手了。但其实,这样的问题解决多了,会发现原因基本就两种情况,死锁和死循环。[由于发现原创文章,在未署名作者及出处的情况下被转载。在以后所有的原创文章开头我都会写明作者和出处。希望朋友们以后在转载本博客原创博文时注意标明文章作者及出处。

所以,在出现soft lockup错误时,不用慌张,只要分析相关代码是不是存在死循环,比如 for循环的退出条件弄错了导致循环无法退出,等等;或者就是分析是不是相关代码在使用锁时不正确导致了死锁。比如,spinlock嵌套调用若顺序不对的话就可能导致死锁,等等。

总之,在出现soft lockup错误时,基本就从这两方面找原因就可以了。即使core dump文件中可能会给出其他的call trace,也要从上述两方面认真进行分析,从而可以拨云见日,找到问题的真正原因。

关于lockup我们可以简单了解下。lockup分为soft lockup和hard lockup。 

soft lockup是指内核中有BUG导致在内核模式下一直循环的时间超过67s(根据实现和配置有所不同),而其他进程得不到运行的机会。

hard lockup的发生是由于禁止了CPU的所有中断超过一定时间(几秒)这种情况下,外部设备发生的中断无法处理,内核认为此时发生了所谓的hard lockup,出现这种情况的可能原因是由于spin_lock_irqsave导致的。[我的系统是ubuntu6.06,最近新装好的mysql在进入mysql工具时,总是有错误提示:# mysql -uroot -pEnter password:ERROR 1045 (28000): Access denied for use]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值