You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Gordon Sim (JIRA)" <qp...@incubator.apache.org> on 2008/10/30 12:29:44 UTC

[jira] Created: (QPID-1417) Seg fault caused by bad pointer in AggregateOutputControl

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>, 
    a0=@0xa1b970) at /usr/include/boost/function/function_template.hpp:692
No locals.
#5  0x00007f83c3b4a317 in qpid::sys::posix::AsynchIO::writeable (this=0x9da440,
h=@0x9da448) 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>, 
    a0=@0xa1b970) 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.


[jira] Resolved: (QPID-1417) Seg fault caused by bad pointer in AggregateOutputControl

Posted by "Gordon Sim (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-1417?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gordon Sim resolved QPID-1417.
------------------------------

    Resolution: Fixed

Fixed by r711855.

> 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>, 
>     a0=@0xa1b970) at /usr/include/boost/function/function_template.hpp:692
> No locals.
> #5  0x00007f83c3b4a317 in qpid::sys::posix::AsynchIO::writeable (this=0x9da440,
> h=@0x9da448) 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>, 
>     a0=@0xa1b970) 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.