当前位置: 技术问答>linux和unix
请教一个问题:程序在Linux 2.4.20内核上跑无问题。但在2.4.19内核上跑就出现段错误现象。查了一星期,毫无头绪,万望各位指点。
来源: 互联网 发布时间:2015-07-17
本文导语: 程序说明如下: 采用了多线程结构,并用到了互斥锁(mutex),采用默认属性。经排查发现以下现象: 如果某个线程获得了锁,那么其它线程就等待,当锁被释放后,新获得锁的线程在执行完成,释放锁时出现段错误...
程序说明如下:
采用了多线程结构,并用到了互斥锁(mutex),采用默认属性。经排查发现以下现象:
如果某个线程获得了锁,那么其它线程就等待,当锁被释放后,新获得锁的线程在执行完成,释放锁时出现段错误情况。并且经反汇编,发现错误的地方基本与释放锁的地方相符,ip为0000。
基本情况就是这样,可以排除由于程序导致内存地址的错误。说的比较笼统,不过还是请各位有经验的前辈指点一二,可能会是什么原因造成。
对了,发现另外一个现象,kwrite 在2.4.18-3内核上跑,退出时老提示什么mutex destroy failed。我怀疑是不是操作系统对锁的支持不够好?
采用了多线程结构,并用到了互斥锁(mutex),采用默认属性。经排查发现以下现象:
如果某个线程获得了锁,那么其它线程就等待,当锁被释放后,新获得锁的线程在执行完成,释放锁时出现段错误情况。并且经反汇编,发现错误的地方基本与释放锁的地方相符,ip为0000。
基本情况就是这样,可以排除由于程序导致内存地址的错误。说的比较笼统,不过还是请各位有经验的前辈指点一二,可能会是什么原因造成。
对了,发现另外一个现象,kwrite 在2.4.18-3内核上跑,退出时老提示什么mutex destroy failed。我怀疑是不是操作系统对锁的支持不够好?
|
Kernel crash 好查。
/usr/share/doc/kernel-doc-2.4.7/oops-tracing.txt
man ksymoops
/usr/share/doc/kernel-doc-2.4.7/oops-tracing.txt
man ksymoops
|
可能是不同版本的线程库造成的
|
帮你up