当它给出以下输出的回溯(backtrace)时,这意味着什么?
#0 0x00000008009c991c in pthread_testcancel () from /lib/libpthread.so.2
#1 0x00000008009b8120 in sigaction () from /lib/libpthread.so.2
#2 0x00000008009c211a in pthread_mutexattr_init () from /lib/libpthread.so.2
#3 0x0000000000000000 in ?? ()
程序崩溃并出现标准信号11,即分段错误。
我的应用程序是在FreeBSD 6.3上运行的多线程FastCGI C++程序,使用pthread作为线程库。根据信息源,它已经被编译为-g,并且加载了所有源代码的符号表。
显然,在跟踪中没有出现我的实际代码,而是错误似乎源于标准pthread库。具体来说,??()????是什么?
编辑:最终将崩溃追踪到主代码中的标准无效内存访问。虽然这并不能解释为什么堆栈跟踪会损坏,但这是另一个问题 :)