Description of problem: Stress test with perftest causes the client to crash. Version-Release number of selected component (if applicable): Trunk r941852 How reproducible: Not sure yet Steps to Reproduce: 1. while ./src/tests/perftest --qt 20 --summary; do true; done Actual results: Abort in TCPConnector (see below for stack traces) . Expected results: No Abort. Additional info: Core was generated by `/home/gordon/qpid/cpp/src/tests/.libs/lt-perftest --qt 20 --summary'. Program terminated with signal 6, Aborted. [New process 31609] [New process 31631] [New process 31629] [New process 31627] [New process 31625] #0 0x00000038f9c30265 in raise () from /lib64/libc.so.6 (gdb) bt #0 0x00000038f9c30265 in raise () from /lib64/libc.so.6 #1 0x00000038f9c31d10 in abort () from /lib64/libc.so.6 #2 0x00000038f9c296e6 in __assert_fail () from /lib64/libc.so.6 #3 0x00002b7dc4a3ed88 in qpid::client::TCPConnector::close (this=0x16629630) at ../include/qpid/sys/posix/Mutex.h:116 #4 0x00002b7dc49ed58b in ~Connection (this=0x16627130) at /usr/include/boost/detail/sp_counted_base_gcc_x86.hpp:145 #5 0x000000000040f3e6 in ~Client (this=0x16627120) at perftest.cpp:260 #6 0x000000000040f542 in ~PublishThread (this=0x16627120) at perftest.cpp:470 #7 0x000000000040bda5 in main (argc=<value optimized out>, argv=<value optimized out>) at /usr/include/boost/checked_delete.hpp:34 (gdb) thread apply all bt Thread 5 (process 31625): #0 0x00000038f9c7ad96 in memset () from /lib64/libc.so.6 #1 0x00000038f9c7256d in _int_free () from /lib64/libc.so.6 #2 0x00000038f9c7273b in free () from /lib64/libc.so.6 #3 0x00002b7dc4a43260 in ~Buff (this=0x2aaab43a6590) at qpid/client/TCPConnector.cpp:51 #4 0x00002b7dc4e0f634 in std::for_each<std::_Deque_iterator<qpid::sys::AsynchIOBufferBase*, qpid::sys::AsynchIOBufferBase*&, qpid::sys::AsynchIOBufferBase**>, qpid::sys::posix::deleter> (__first={_M_cur = 0x416d8c50, _M_first = 0xa1, _M_last = 0xb7b7b7b7b7b7b7b7, _M_node = 0xb7}, __last= {_M_cur = 0x416d8c30, _M_first = 0x416d8c00, _M_last = 0x10008, _M_node = 0x10008}, __f={<No data fields>}) at qpid/sys/posix/AsynchIO.cpp:293 #5 0x00002b7dc4e0a564 in ~AsynchIO (this=0x2aaab4205420) at qpid/sys/posix/AsynchIO.cpp:297 #6 0x00002b7dc4ef0191 in qpid::sys::DispatchHandle::processEvent (this=0x2aaab4205428, type=qpid::sys::Poller::READ_WRITABLE) at qpid/sys/DispatchHandle.cpp:334 #7 0x00002b7dc4e1b3fd in qpid::sys::Poller::run (this=0x15bf05d0) at ./qpid/sys/Poller.h:123 #8 0x00002b7dc4e12caa in runRunnable (p=0x2aaab43b14c0) at qpid/sys/posix/Thread.cpp:35 #9 0x00000038fa406617 in start_thread () from /lib64/libpthread.so.0 #10 0x00000038f9cd3c2d in clone () from /lib64/libc.so.6 Thread 4 (process 31627): #0 0x00000038f9cd4018 in epoll_wait () from /lib64/libc.so.6 #1 0x00002b7dc4e1a8e3 in qpid::sys::Poller::wait (this=0x15bf05d0, timeout=<value optimized out>) at qpid/sys/epoll/EpollPoller.cpp:524 #2 0x00002b7dc4e1b40c in qpid::sys::Poller::run (this=0x15bf05d0) at qpid/sys/epoll/EpollPoller.cpp:479 #3 0x00002b7dc4e12caa in runRunnable (p=0x5) at qpid/sys/posix/Thread.cpp:35 #4 0x00000038fa406617 in start_thread () from /lib64/libpthread.so.0 #5 0x00000038f9cd3c2d in clone () from /lib64/libc.so.6 Thread 3 (process 31629): #0 0x00000038f9cdf9ee in __lll_lock_wait_private () from /lib64/libc.so.6 #1 0x00000038f9c76d31 in _L_lock_5478 () from /lib64/libc.so.6 #2 0x00000038f9c71c8d in _int_free () from /lib64/libc.so.6 #3 0x00000038f9c7273b in free () from /lib64/libc.so.6 #4 0x00002b7dc49f789b in ~ConnectionHandler (this=0x16629148) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:94 #5 0x00002b7dc49ff78e in ~ConnectionImpl (this=0x16629060) at qpid/client/ConnectionImpl.cpp:204 #6 0x00002b7dc4e1067f in boost::function2<void, qpid::sys::AsynchIO&, qpid::sys::Socket const&, std::allocator<boost::function_base> >::operator() ( this=0xfffffffffffffffc, a0=@0x80, a1=@0x0) at /usr/include/boost/function/function_template.hpp:576 #7 0x00002b7dc4e0e458 in qpid::sys::posix::AsynchIO::writeable (this=0x2aaaad21faf0, h=@0x2aaaad21faf8) at qpid/sys/posix/AsynchIO.cpp:530 #8 0x00002b7dc4ef144f in boost::function1<void, qpid::sys::DispatchHandle&, std::allocator<boost::function_base> >::operator() ( this=0xfffffffffffffffc, a0=@0x80) at /usr/include/boost/function/function_template.hpp:576 #9 0x00002b7dc4ef0351 in qpid::sys::DispatchHandle::processEvent (this=0x2aaaad21faf8, type=qpid::sys::Poller::READ_WRITABLE) at qpid/sys/DispatchHandle.cpp:285 #10 0x00002b7dc4e1b3fd in qpid::sys::Poller::run (this=0x15bf05d0) at ./qpid/sys/Poller.h:123 ---Type <return> to continue, or q <return> to quit--- #11 0x00002b7dc4e12caa in runRunnable (p=0x2aaab4000020) at qpid/sys/posix/Thread.cpp:35 #12 0x00000038fa406617 in start_thread () from /lib64/libpthread.so.0 #13 0x00000038f9cd3c2d in clone () from /lib64/libc.so.6 Thread 2 (process 31631): #0 0x00000038f9cd4018 in epoll_wait () from /lib64/libc.so.6 #1 0x00002b7dc4e1a8e3 in qpid::sys::Poller::wait (this=0x15bf05d0, timeout=<value optimized out>) at qpid/sys/epoll/EpollPoller.cpp:524 #2 0x00002b7dc4e1b40c in qpid::sys::Poller::run (this=0x15bf05d0) at qpid/sys/epoll/EpollPoller.cpp:479 #3 0x00002b7dc4e12caa in runRunnable (p=0x5) at qpid/sys/posix/Thread.cpp:35 #4 0x00000038fa406617 in start_thread () from /lib64/libpthread.so.0 #5 0x00000038f9cd3c2d in clone () from /lib64/libc.so.6 Thread 1 (process 31609): #0 0x00000038f9c30265 in raise () from /lib64/libc.so.6 #1 0x00000038f9c31d10 in abort () from /lib64/libc.so.6 #2 0x00000038f9c296e6 in __assert_fail () from /lib64/libc.so.6 #3 0x00002b7dc4a3ed88 in qpid::client::TCPConnector::close (this=0x16629630) at ../include/qpid/sys/posix/Mutex.h:116 #4 0x00002b7dc49ed58b in ~Connection (this=0x16627130) at /usr/include/boost/detail/sp_counted_base_gcc_x86.hpp:145 #5 0x000000000040f3e6 in ~Client (this=0x16627120) at perftest.cpp:260 #6 0x000000000040f542 in ~PublishThread (this=0x16627120) at perftest.cpp:470 #7 0x000000000040bda5 in main (argc=<value optimized out>, argv=<value optimized out>) at /usr/include/boost/checked_delete.hpp:34 (gdb)
I believe this is a dup of bug 586997 and is a result of a race between ConnectionImpl::shutdown() and ConnectionImpl::release(). *** This bug has been marked as a duplicate of bug 586997 ***