Seg fault caused by bad pointer in AggregateOutputControl ---------------------------------------------------------
Key: QPID-1417 URL: https://issues.apache.org/jira/browse/QPID-1417 Project: Qpid Issue Type: Bug Components: C++ Broker Affects Versions: M4 Reporter: Gordon Sim Assignee: Gordon Sim Priority: Critical Fix For: M4 If perftest is configured to cause a store "Enqueue capacity threshold exceeded" error, the broker fails with a SIGSEV. To reproduce, start the broker with (adjust paths): ./qpidd --load-module /home/kpvdr/mrg/store.ref/cpp/lib/.libs/msgstore.so --auth no --log-enable info+ --data-dir /tmp At the time of filing, perftest used with --sub-tx option causes the sub to run slowly and thus cuase the pubs to overflow the journal (a known bug). Using this flaw, start perftest with: ./perftest --durable yes --tcp-nodelay --npubs 4 --nsubs 4 --sub-tx 10 The broker cores almost immediately after printing a lot of error messages: 2008-oct-24 14:00:53 info Listening on TCP port 5672 [New Thread 0x43f09950 (LWP 16648)] [New Thread 0x415a5950 (LWP 16649)] 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 notice Journal "perftest0": Created 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning SASL: No Authentication Performed 2008-oct-24 14:01:01 warning Journal "perftest0": Enqueue capacity threshold exceeded on queue "perftest0". 2008-oct-24 14:01:01 error Unexpected exception: Enqueue capacity threshold exceeded on queue "perftest0". (JournalImpl.cpp:501) 2008-oct-24 14:01:01 warning Journal "perftest0": Enqueue capacity threshold exceeded on queue "perftest0". 2008-oct-24 14:01:01 error Connection 127.0.0.1:42680 closed by error: Enqueue capacity threshold exceeded on queue "perftest0". (JournalImpl.cpp:501)(501) 2008-oct-24 14:01:01 error Unexpected exception: Enqueue capacity threshold exceeded on queue "perftest0". (JournalImpl.cpp:501) 2008-oct-24 14:01:01 error Connection 127.0.0.1:42678 closed by error: Enqueue capacity threshold exceeded on queue "perftest0". (JournalImpl.cpp:501)(501) 2008-oct-24 14:01:01 error Channel exception: not-attached: Channel 2 is not attached (qpid/amqp_0_10/SessionHandler.cpp:56) 2008-oct-24 14:01:01 error Channel exception: not-attached: Channel 2 is not attached (qpid/amqp_0_10/SessionHandler.cpp:56) 2008-oct-24 14:01:01 error Channel exception: not-attached: Channel 2 is not attached (qpid/amqp_0_10/SessionHandler.cpp:56) <snip> ... </snip> 2008-oct-24 14:01:02 error Channel exception: not-attached: Channel 2 is not attached (qpid/amqp_0_10/SessionHandler.cpp:56) 2008-oct-24 14:01:02 error Channel exception: not-attached: Channel 2 is not attached (qpid/amqp_0_10/SessionHandler.cpp:56) 2008-oct-24 14:01:02 error Channel exception: not-attached: Channel 2 is not attached (qpid/amqp_0_10/SessionHandler.cpp:56) Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x415a5950 (LWP 16649)] 0x00007f83c3b96b74 in qpid::sys::AggregateOutput::doOutput (this=0xa1b0a0) at qpid/sys/AggregateOutput.cpp:49 49 result = tasks[next++]->doOutput(); (gdb) bt full #0 0x00007f83c3b96b74 in qpid::sys::AggregateOutput::doOutput (this=0xa1b0a0) at qpid/sys/AggregateOutput.cpp:49 result = <value optimized out> #1 0x00007f83c3f2b299 in qpid::broker::Connection::doOutput (this=0xa1b030) at qpid/broker/Connection.cpp:217 No locals. #2 0x00007f83c3f02776 in qpid::amqp_0_10::Connection::encode (this=0xa1c320, buffer=0x9faba0 "\017", size=<value optimized out>) at qpid/amqp_0_10/Connection.cpp:86 out = {size = 65536, data = 0x9faba0 "\017", position = 98, r_position = 0} frameSize = 98 __PRETTY_FUNCTION__ = "virtual size_t qpid::amqp_0_10::Connection::encode(const char*, size_t)" stmt_ = {enabled = false, file = 0x7f83c3fb3e23 "qpid/amqp_0_10/Connection.cpp", line = 78, function = 0x7f83c3fb4060 "virtual size_t qpid::amqp_0_10::Connection::encode(const char*, size_t)", level = qpid::log::trace} init_ = {statement = @0x7f83c4210b80} stmt_ = {enabled = false, file = 0x7f83c3fb3e23 "qpid/amqp_0_10/Connection.cpp", line = 83, function = 0x7f83c3fb4060 "virtual size_t qpid::amqp_0_10::Connection::encode(const char*, size_t)", level = qpid::log::trace} init_ = {statement = @0x7f83c4210b40} #3 0x00007f83c3b97aa9 in qpid::sys::AsynchIOHandler::idle (this=0xa1eee0) at qpid/sys/AsynchIOHandler.cpp:166 buff = <value optimized out> encoded = 7301231304930963497 #4 0x00007f83c3b4ca47 in boost::function1<void, qpid::sys::AsynchIO&, std::allocator<boost::function_base> >::operator() (this=<value optimized out>, [EMAIL PROTECTED]) at /usr/include/boost/function/function_template.hpp:692 No locals. #5 0x00007f83c3b4a317 in qpid::sys::posix::AsynchIO::writeable (this=0x9da440, [EMAIL PROTECTED]) at qpid/sys/posix/AsynchIO.cpp:530 writeTotal = 0 __PRETTY_FUNCTION__ = "void qpid::sys::posix::AsynchIO::writeable(qpid::sys::DispatchHandle&)" #6 0x00007f83c3b9a7f7 in boost::function1<void, qpid::sys::DispatchHandle&, std::allocator<boost::function_base> >::operator() (this=<value optimized out>, [EMAIL PROTECTED]) at /usr/include/boost/function/function_template.hpp:692 No locals. #7 0x00007f83c3b9a5b0 in qpid::sys::DispatchHandle::processEvent (this=0x9da448, type=qpid::sys::Poller::READ_WRITABLE) at qpid/sys/DispatchHandle.cpp:360 __PRETTY_FUNCTION__ = "virtual void qpid::sys::DispatchHandle::processEvent(qpid::sys::Poller::EventType)" #8 0x00007f83c3b98e18 in qpid::sys::Dispatcher::run (this=0x7fffcc212e80) at qpid/sys/Poller.h:105 event = {handle = 0x9da448, type = qpid::sys::Poller::READ_WRITABLE} __PRETTY_FUNCTION__ = "virtual void qpid::sys::Dispatcher::run()" #9 0x00007f83c3b4e98a in runRunnable (p=0xc2cc78) at qpid/sys/posix/Thread.cpp:35 No locals. #10 0x000000379880729a in start_thread (arg=<value optimized out>) at pthread_create.c:297 __res = <value optimized out> pd = <value optimized out> unwind_buf = Could not find the frame base for "start_thread". -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.