我在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()
代码似乎没有问题,因为进程闲置时突然崩溃。
然后我决定查看syslog,并找到以下消息
[ID 702911 auth.error] [22216] Run idle timeout reached (32400 seconds)
知道为什么会这样吗?
答案 0 :(得分:0)
引发SIGABRT是因为您有一个未处理的异常。堆栈跟踪告诉您异常的来源:
void TAO_ORB_Core::check_shutdown()
该函数的documentation表示如果ACE ORB已关闭,它会抛出异常,这意味着程序需要终止。所以问题就变成了,为什么你的应用程序逻辑在达到“超时”时会关闭ORB?这是你需要深入了解你的应用程序才能找到的东西 - 我不认为我们有这个来源。