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.