识别多线程程序中的崩溃 - 如何?

发布于 2024-12-29 05:07:12 字数 2112 浏览 0 评论 0原文

我在使用 GDB 进行调试方面很有经验,所以我的问题与调试符号不可用无关:)。我正在处理多线程程序中的崩溃问题。就在崩溃之前,我在 GDB 中看到以下日志,并且回溯没有给我太多信息。信息线程再次显示我没有在应用程序空间下运行。关于我如何解决这个问题的任何建议。

[New Thread 1755]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1755]
warning: GDB can't find the start of the function at 0x2ac17638.

    GDB is unable to find the start of the function at 0x2ac17638
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
    This problem is most likely caused by an invalid program counter or
stack pointer.
    However, if you think GDB should simply search farther back
from 0x2ac17638 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
0x2ac17638 in ?? ()
(gdb) bt
#0  0x2ac17638 in ?? ()
(gdb) info thread
[New Thread 1737]
[New Thread 1738]
[New Thread 1739]
[New Thread 1740]
[New Thread 1741]
[New Thread 1742]
[New Thread 1744]
[New Thread 1745]
[New Thread 1746]
[New Thread 1747]
[New Thread 1748]
[New Thread 1749]
[New Thread 1750]
[New Thread 1751]
[New Thread 1752]
[New Thread 1753]
[New Thread 1754]
[New Thread 1756]
  20 Thread 1756  0x2aac1068 in ?? ()
  19 Thread 1754  0x2abd62b4 in ?? ()
  18 Thread 1753  0x2abd62b4 in ?? ()
  17 Thread 1752  0x2aabda58 in ?? ()
  16 Thread 1751  0x2abd62b4 in ?? ()
  15 Thread 1750  0x2aabda58 in ?? ()
  14 Thread 1749  0x2aabda58 in ?? ()
  13 Thread 1748  0x2aabda58 in ?? ()
  12 Thread 1747  0x2aabfb44 in ?? ()
  11 Thread 1746  0x2aabfb44 in ?? ()
  10 Thread 1745  0x2aabfb44 in ?? ()
  9 Thread 1744  0x2aabfb44 in ?? ()
  8 Thread 1742  0x2aabfb44 in ?? ()
  7 Thread 1741  0x2aac15dc in ?? ()
  6 Thread 1740  0x2abd62b4 in ?? ()
  5 Thread 1739  0x2abd62b4 in ?? ()
  4 Thread 1738  0x2abd62b4 in ?? ()
  3 Thread 1737  0x2aabfb44 in ?? ()
* 2 Thread 1755  0x2ac17638 in ?? ()
  1 Thread 1736  0x2abd56bc in ?? ()
warning: GDB can't find the start of the function at 0x2ac17638.

PS 它是基于 MIPS 的嵌入式 Linux,问题很少重现,但在启动时。

I am quiet experienced in debugging with GDB, so my question is not related to debug symbols not being available :). I am dealing with a crash in mutti threaded program. Just before the crash I see following logs in GDB, and backtrace does not give me much info. Info thread again shows I am not running under application space. Any suggestions as to how I can approach this problem.

[New Thread 1755]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1755]
warning: GDB can't find the start of the function at 0x2ac17638.

    GDB is unable to find the start of the function at 0x2ac17638
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
    This problem is most likely caused by an invalid program counter or
stack pointer.
    However, if you think GDB should simply search farther back
from 0x2ac17638 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
0x2ac17638 in ?? ()
(gdb) bt
#0  0x2ac17638 in ?? ()
(gdb) info thread
[New Thread 1737]
[New Thread 1738]
[New Thread 1739]
[New Thread 1740]
[New Thread 1741]
[New Thread 1742]
[New Thread 1744]
[New Thread 1745]
[New Thread 1746]
[New Thread 1747]
[New Thread 1748]
[New Thread 1749]
[New Thread 1750]
[New Thread 1751]
[New Thread 1752]
[New Thread 1753]
[New Thread 1754]
[New Thread 1756]
  20 Thread 1756  0x2aac1068 in ?? ()
  19 Thread 1754  0x2abd62b4 in ?? ()
  18 Thread 1753  0x2abd62b4 in ?? ()
  17 Thread 1752  0x2aabda58 in ?? ()
  16 Thread 1751  0x2abd62b4 in ?? ()
  15 Thread 1750  0x2aabda58 in ?? ()
  14 Thread 1749  0x2aabda58 in ?? ()
  13 Thread 1748  0x2aabda58 in ?? ()
  12 Thread 1747  0x2aabfb44 in ?? ()
  11 Thread 1746  0x2aabfb44 in ?? ()
  10 Thread 1745  0x2aabfb44 in ?? ()
  9 Thread 1744  0x2aabfb44 in ?? ()
  8 Thread 1742  0x2aabfb44 in ?? ()
  7 Thread 1741  0x2aac15dc in ?? ()
  6 Thread 1740  0x2abd62b4 in ?? ()
  5 Thread 1739  0x2abd62b4 in ?? ()
  4 Thread 1738  0x2abd62b4 in ?? ()
  3 Thread 1737  0x2aabfb44 in ?? ()
* 2 Thread 1755  0x2ac17638 in ?? ()
  1 Thread 1736  0x2abd56bc in ?? ()
warning: GDB can't find the start of the function at 0x2ac17638.

P.S. Its a MIPS based embedded linux, the problem is rarely reproducible, but on boot up.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文