0

我在 solaris 中的一个程序突然崩溃,在 SIGABRT 的日志中没有任何痕迹

以下是核心转储

threading model: multi-threaded
status: process terminated by SIGABRT (Abort)
C++ symbol demangling enabled
libc.so.1`_lwp_kill+0xa()
libc.so.1`raise+0x19()
libc.so.1`abort+0x90()
libCrun.so.1`void __Cimpl::default_terminate+9() 
libCrun.so.1`void __Cimpl::ex_terminate+0x25() 
libCrun.so.1`void __Crun::ex_throw+0x26() 
libTAO.so.2.0.7`void TAO_ORB_Core::check_shutdown+0x4c()
0x319c9a8()

代码似乎没有问题,因为进程在空闲时突然崩溃。

然后我决定查看系统日志,发现以下消息

[ID 702911 auth.error] [22216] Run idle timeout reached (32400 seconds)

知道为什么会这样吗?

4

1 回答 1

0

引发 SIGABRT 是因为您有未处理的异常。堆栈跟踪告诉您异常来自何处:

void TAO_ORB_Core::check_shutdown()

该函数的文档说,如果 ACE ORB 已关闭,它会引发异常,这意味着程序需要终止。那么问题就变成了,为什么您的应用程序逻辑会在 ORB 达到“超时”时关闭它?这就是你需要深入研究你的应用程序才能找到的东西——我认为我们没有这方面的来源。

于 2015-01-20T05:20:05.630 回答