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

C++ server crashes with abort() in _UTF8_init() on free()

本文关键字:init UTF8 中的 崩溃 abort 服务器 free c++      更新时间:2023-10-16

我有c++代码通过dlopen()由c++ CGI服务器加载的问题。过了一段时间,程序意外崩溃,但始终在内存管理函数调用(如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(),为什么内存管理函数调用它?

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