代码(我的原始代码使用 assert ,但这是一个更短的 sscce )

#include <cstdlib>

int main() {
    abort();
    return 0;
}

编译器版本:
$ g++ --version
g++ (GCC) 4.8.0
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

编译:
$ g++ test.cpp -o test

运行:
$ ./test

无限期挂起。检查 top 我注意到 abrt-hook-ccpp(作为 root)占用了整个 CPU(固定为 75%,./test 占用 25%)。

其他注意事项:这种行为似乎很不稳定,只有大约 80% 的时间发生。我尝试了每个优化级别(O0 到 O4),没有任何区别。

此外,我无法在本地机器上重现此行为 (g++ 4.8.1)

最佳答案

这可能是 Redhat 的自动错误报告工具中的一个错误。尝试禁用 ABRT 服务,看看它是否有效。

您可以禁用 abrt-ccpp:

# chkconfig abrt-ccpp off
# service abrt-ccpp stop

或整个服务:
# chkconfig abrtd off
# service abrtd stop

关于c++ - abort() 无限期挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22291878/

10-13 03:16