freerock 发表于 2009-2-4 20:14:45

ace在liinux中多线程出现内存dump

大致流程,我开启了线程池,在主线程中接受网络连接,接受到连接后交给线程池处理,在线程中有动态分配内存和释放,但是出现了malloc_consolidate ()错误,有谁遇到过这种情况吗?
下面是用gdb, bt产生的调用栈
#00x0000003dd966fa1e in malloc_consolidate () from /lib64/libc.so.6
#10x0000003dd967143b in _int_free () from /lib64/libc.so.6
#20x0000003dd9674ccc in free () from /lib64/libc.so.6
#30x000000000040b48a in Workers::process_message (this=0x412deff0,
    mb=0x43d3b20) at main.cpp:98
#40x000000000040b56c in Workers::svc (this=0x412deff0) at main.cpp:81
#50x00002ae414fcc157 in ACE_Task_Base::svc_run (args=<value optimized out>)
    at ../../ace/Task.cpp:275
#60x00002ae414fcd0d5 in ACE_Thread_Adapter::invoke (this=0x4392620)
    at ../../ace/Thread_Adapter.cpp:98
#70x0000003dda206307 in start_thread () from /lib64/libpthread.so.0
#80x0000003dd96d1ded in clone () from /lib64/libc.so.6

谢谢啊

winston 发表于 2009-2-4 21:26:23

贴上代码,否则谁能猜得出呢。

_coco 发表于 2009-2-20 21:57:36

得看一下堆栈3的局部变量....是什么地方调用了free函数。
页: [1]
查看完整版本: ace在liinux中多线程出现内存dump