多线程应用程序的核心转储只显示一个线程

Dmi*_*kov 6 linux multithreading gdb

我在c ++中有一个测试应用程序,在其中启动了几个线程main(),然后main()永远沉睡.

其中一个线程正在做一些导致段错误的事情,并且生成了一个coredump(之前设置了ulimit -c unlimited).

我打开核心gdb并看到thread apply all bt或者info threads我只有一个线程(启动main()),这是不可能的,因为至少main()线程也应该运行.

问题是如何丢失其余的线程以及可能导致它的原因?

这个孤独的线程的回溯似乎没问题,其中没有什么奇怪的东西.

操作系统是Red Hat Enterprise 5.3,gdb-6.8.

Dmi*_*kov 1

事实证明这是默认 Red Hat Enterprise 5.3 中的内核错误,在更高的 Red Hat 版本(5.4)中修复了 -kernel-2.6.18-164.el5

http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html-single/5.4_Technical_Notes/index.html

1.110.1。RHSA-2009:1193:32 位系统上的重要安全性和错误修复更新,某些多线程应用程序的核心转储不包括所有线程信息。(BZ#505322)

https://bugzilla.redhat.com/show_bug.cgi?id=505322