C ++服务器在free()的_UTF8_init()中使用abort()崩溃

时间:2011-10-11 19:34:41

标签: c++ c utf-8 xerces coredump

我遇到了C ++ CGI服务器通过dlopen()加载的C ++代码问题。一段时间后,程序意外崩溃,但始终在内存管理函数调用(如free(),calloc()等)并生成类似于此的核心转储:

#0  0x0000000806b252dc in kill () from /lib/libc.so.6
#1  0x0000000804a1861e in raise () from /lib/libpthread.so.2
#2  0x0000000806b2416d in abort () from /lib/libc.so.6
#3  0x0000000806abdb45 in _UTF8_init () from /lib/libc.so.6
#4  0x0000000806abdfcc in _UTF8_init () from /lib/libc.so.6
#5  0x0000000806abeb1d in _UTF8_init () from /lib/libc.so.6
... the rest of the stack

以前有人见过这样的事吗?

什么是_UTF8_init()以及为什么内存管理函数会调用它?

1 个答案:

答案 0 :(得分:3)

它闻起来像一个损坏的堆,可能是由于代码中某处的缓冲区溢出。尝试使用Valgrind运行程序,并查找它发出的任何错误或警告。