2

我在多线程环境中运行一个程序,它有时会失败。当我用 gdb 尝试它时,它会出现以下错误。

程序收到信号 SIGSEGV,分段错误。

[切换到线程 0x7fff677b700 (LWP 2777)] 0x00007ffff7aa42b9 in process_incomplete_rows (resultset=0x507950) at c/mgmt.c:479 479 c/mgmt.c: 没有这样的文件或目录。

mgmt.c 文件在那里,此代码对于某些选项工作正常,但有 2 或 3 个选项会给出此错误。这个错误的原因可能是什么。它在编译或 coe 中的错误?还是访问某些数据时出错?

4

2 回答 2

5

分段错误是一种运行时错误,通常是由于引用了无效的指针。通常,该无效指针从未被初始化,但有时它会重用旧指针或写入已分配内存块的末尾(例如字符串末尾)。

于 2013-06-07T06:53:03.127 回答
0

这可能意味着您的node变量要么已损坏,要么NULL已损坏。在调试器中运行你的程序,从崩溃前的某个时间点开始逐步执​​行,直到它看到你把它搞砸了。或者使用 Purify 或 Insure++ 等自动化工具之一为您追踪。

于 2013-06-07T15:13:57.597 回答