当前位置: 技术问答>linux和unix
linux 系统崩溃
来源: 互联网 发布时间:2016-12-09
本文导语: 各位高手,请教一个问题。 我的一个应用程序里面有十几个线程在运行,他们有的是睡眠在nano_sleep()函数上,但是在系统运行几十个小时之后,linux会崩溃,根据系统崩溃时的跟踪记录,实在调用nano_sleep()函数是崩...
各位高手,请教一个问题。
我的一个应用程序里面有十几个线程在运行,他们有的是睡眠在nano_sleep()函数上,但是在系统运行几十个小时之后,linux会崩溃,根据系统崩溃时的跟踪记录,实在调用nano_sleep()函数是崩溃的,其实就是在做系统调度的时候崩溃的。
我想请你请问一下,各位高人有没有遇到过这种情况。是不是系统调度的时候崩溃,最大的原因就是,死锁了,或者是
出现了中断(软硬中断)中延时的情况?
我的一个应用程序里面有十几个线程在运行,他们有的是睡眠在nano_sleep()函数上,但是在系统运行几十个小时之后,linux会崩溃,根据系统崩溃时的跟踪记录,实在调用nano_sleep()函数是崩溃的,其实就是在做系统调度的时候崩溃的。
我想请你请问一下,各位高人有没有遇到过这种情况。是不是系统调度的时候崩溃,最大的原因就是,死锁了,或者是
出现了中断(软硬中断)中延时的情况?
|
感觉像是在中断处理过程中发生了问题:中断不能进行可以休眠的操作,也不能进行调度操作。
|
你这个看上去是在ched_clock+0x0/0x90 这里有一个访问空指针的操作。你结合你的内核的代码看一下。不过你的运行几十和小时才出现问题很难解释啊。
看上去和自定义的始终中断有关,我在网上搜了一下,内核有个类似的bug但和你这个也不是很匹配。你自己分析一下你平台的高精度时钟的实现吧,对ARM不熟,我就帮不上上面忙了。或者试试新的内核版本吧
看上去和自定义的始终中断有关,我在网上搜了一下,内核有个类似的bug但和你这个也不是很匹配。你自己分析一下你平台的高精度时钟的实现吧,对ARM不熟,我就帮不上上面忙了。或者试试新的内核版本吧
|
linux的睡眠是个老生常谈的问题,他设计调度机制,信号安全等方面问题,所以只有等待内核大牛们来完善。
我的建议是,如果精度要求不高,可以换用sleep,msleep ,select等封装过睡眠来取代直接调用nano_sleep,这样出错的几率会大大降低
我的建议是,如果精度要求不高,可以换用sleep,msleep ,select等封装过睡眠来取代直接调用nano_sleep,这样出错的几率会大大降低
|
应用程序导致内核崩溃不常见吧!
不清楚上面问题,你把OOPS贴出来让高手帮你看一下。
不清楚上面问题,你把OOPS贴出来让高手帮你看一下。
|
很麻烦啊
|
顶一个!