Solaris程序在空闲时与SIGABRT崩溃

时间:2015-01-20 05:12:44

标签: c++ solaris corba sigabrt tao

我在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)

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

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

void TAO_ORB_Core::check_shutdown()

该函数的documentation表示如果ACE ORB已关闭,它会抛出异常,这意味着程序需要终止。所以问题就变成了,为什么你的应用程序逻辑在达到“超时”时会关闭ORB?这是你需要深入了解你的应用程序才能找到的东西 - 我不认为我们有这个来源。