所以当 glibc 崩溃时,它有一个*glibc detected * crash 消息。然后它会打印一堆回溯,比如
*** glibc detected *** ./odin: free(): invalid pointer: 0xbfba4444 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6b161)[0xb75f9161]
/lib/tls/i686/cmov/libc.so.6(+0x6c9b8)[0xb75fa9b8]
/lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0xb75fda9d]
/usr/lib/libstdc++.so.6(_ZdlPv+0x1f)[0xb77da2ef]
一切都很好,但是当事情崩溃的其他情况下,我一直在做 backtrace() 然后使用系统调用 addr2line 并打印函数中的实际点。但是当它是 glibc 崩溃时,它会退出绕过我调用的任何信号处理程序。
有没有办法解决这些 glibc 崩溃?