代码(我的原始代码使用 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/