【问题标题】:Process crashed in a thread that shouldn't be running进程在不应运行的线程中崩溃
【发布时间】:2016-02-05 09:13:23
【问题描述】:

我有一个由于 SEGV 而崩溃的多线程进程,而 GDB 显示了这个看起来很奇怪的回溯:

Thread 1 (LWP 3726):
#0  0x00000000 in ?? ()
#1  0x00000000 in ?? ()

这是一个已经退出但尚未加入的线程。我可以相信这个回溯吗?即使它已经完成,这个线程真的被安排了吗?所有其他线程似乎都处于合理状态。这是在运行 Linux 内核 3.10 的 ARM 嵌入式系统上。

【问题讨论】:

  • 看起来你在堆栈指针上乱涂乱画,现在在地址 0x0 处执行,这通常会导致 SEGV。
  • 你确定这不仅仅是在这个线程上下文中调用信号处理程序的事实

标签: c multithreading gdb


【解决方案1】:

只是一个提示,也许您的二进制文件编译时没有调试信息(GCC 的选项 -g)。也许使用此选项,回溯看起来会提供更多信息,并且您会获得更多想法。或者由于堆栈损坏,回溯看起来如此......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    相关资源
    最近更新 更多