代码之家  ›  专栏  ›  技术社区  ›  Rob

等待()系统调用时的信号11 SEGFULT?

  •  0
  • Rob  · 技术社区  · 16 年前

    pipes ,我对行上的命令进行计数,并进行迭代 fork() 一个新的过程。

    wait() 在继续执行下一个命令之前,在子级上单击。这在早期代码中运行良好,但不知何故我破坏了它:

    Program terminated with signal 11, Segmentation fault.
    #0  0xfef28730 in _waitpid () from /usr/lib/libc.so.1
    
    (gdb) backtrace
    #0  0xfef28730 in _waitpid () from /usr/lib/libc.so.1
    #1  0xfef28770 in _wait () from /usr/lib/libc.so.1
    #2  0xfef696d1 in wait () from /usr/lib/libc.so.1
    #3  0x08051428 in main ()
    

    我明白 如果子进程已经终止,将简单地收获僵尸进程。

    等等 导致故障?我如何调试这类事情?

    2 回复  |  直到 14 年前
        1
  •  1
  •   atomice    16 年前

    至于如何调试这类东西,我的第一步是为您的C库安装调试符号。然后查看其错误所在的指针,并将其追溯到堆栈(如果可能)。

        2
  •  1
  •   unwind    16 年前

    查看调用wait()的参数,并查看内存覆盖问题。运行你的程序 Valgrind 可以很容易地获得检测多个覆盖的帮助。

    推荐文章