libc退出调用中的核心转储

时间:2011-01-28 10:56:19

标签: c++ gdb solaris coredump

我在我的程序的退出程序中看到solaris中的核心转储。如何调试和修复这种核心转储?

(gdb) where
#0  0xff2cc0c0 in kill () from /usr/lib/libc.so.1
#1  0x0004dac0 in run_before_killed_handler (sig=11) at NdmpServer.cpp:1186
#2  signal handler called
#3  0xfee0ad50 in ?? ()
#4  0x00060a6c in proc_cleanup ()
#5  0xff2421ac in _exithandle () from /usr/lib/libc.so.1
#6  0xff2305d8 in exit () from /usr/lib/libc.so.1
#7  0x0003431c in _start ()

2 个答案:

答案 0 :(得分:2)

您的程序显然使用atexit(3C)来注册退出处理程序。问题出现在那个处理程序中。

答案 1 :(得分:0)

在不知道Solaris内存布局的更精细细节的情况下,0xfee0ad50似乎在操作系统方面。您在proc_cleanup尝试(和失败)的操作系统调用是什么?