预启动分段故障与ptrace

我不知何故设法破坏我的电脑,所以当我试图使用ptrace来追踪另一个进程(例如strace,gdb)时,我立即得到了分段错误。

例如:

 #strace / bin / true
 execve(“/ bin / true”,[“/ bin / true”],[/ * 27 vars * /])= 0
 --- SIGSEGV(分段错误)@ 0(0)---
 +++被SIGSEGV +++杀死

或与gdb:

 #gdb / bin / true
 GNU gdb Fedora(6.8-27.el5)
 Copyright(C)2008 Free Software Foundation,Inc.
许可证GPLv3 +:GNU GPL版本3或更高版本 
这是免费软件:您可以自由更改和重新分配它。
没有担保,在法律允许的范围内。 键入“显示复制”
和“显示保修”的细节。
这个GDB被configuration为“x86_64-redhat-linux-gnu”...
 (没有finddebugging符号)
 (gdb)运行
启动程序:/ bin / true 

程序终止信号SIGSEGV,分段故障。
该程序不再存在。
如果没有进程debugging,你不能这样做。

rpm -V在strace,gdb和glibc上出现干净。 我没有设置任何LD_ *variables,PATH没有什么特别的。

更新 :用PREEMPT重新编译时,问题在kernel-2.6.18-128内核中。 该内核使用utrace基础结构模拟ptrace,似乎不同意抢占。 内核-2.6.18-164似乎修复它。

在使用CONFIG_PREEMPT重build的“Red Hat Enterprise Linux Client 5.5”内核2.6.18-194上使用时,我有同样的gdb / strace问题。

CONFIG_PREEMPT_VOLUNTARY似乎工作正常。