【问题标题】:Forked child keeps being terminated with status 0x008B分叉的孩子不断被终止,状态为 0x008B
【发布时间】:2019-04-08 09:55:21
【问题描述】:

我在安装了 Ubuntu 18.10 的 VirtualBox 上,而且我是新手。我的代码创建了 100 个在共享内存上工作的分叉子。有时我会收到此消息

Sender(Pid = (childPID)) 以状态 0x008B 终止。

在网上搜索我发现这可能是 SIGSEGV 错误。这是真的吗? 最后,有没有办法找到代码在 1000 多行中失败的地方?我尝试使用本指南:http://www.unknownroad.com/rtfm/gdbtut/gdbsegfault.html 来查找 gdb 的错误,但我的终端说我“没有堆栈”。我对这种问题完全陌生,任何提示将不胜感激。

【问题讨论】:

  • 如果你“没有堆栈”,它可能暗示你在 stack 上有一个缓冲区溢出,这会在返回时覆盖保存的堆栈指针。
  • 用调试符号重新编译你的程序。将-g3-ggdb3 添加到gcc。

标签: c linux ubuntu fork


【解决方案1】:

Sender(Pid = (childPID)) 以状态 0x008B 终止。

在网上搜索我发现这可能是一个 SIGSEGV 错误。是真的吗?

是的,这表明信号 11 (0xB) 终止。

最后,有什么方法可以找到代码在 1000 多行中失败的地方?

我会使用valgrind 运行程序。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2021-03-21
    • 2013-08-08
    • 2012-11-04
    • 2012-11-30
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多