You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Alan Conway (JIRA)" <ji...@apache.org> on 2015/10/21 17:00:30 UTC

[jira] [Commented] (QPID-6790) qpidd crashes in the interop_tests unit test.

    [ https://issues.apache.org/jira/browse/QPID-6790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14967274#comment-14967274 ] 

Alan Conway commented on QPID-6790:
-----------------------------------

Here is a valgrind trace of the problem. Unfortunately it doesn't point clearly to the culprit, it looks like by the time we trigger a segfault we have already followed a bad pointer off into the weeds and lost our way.

==21790== Memcheck, a memory error detector
==21790== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==21790== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==21790== Command: /home/aconway/qpid/debug/src/qpidd --port 0 --interface 127.0.0.1 --no-module-dir --load-module /home/aconway/qpid/debug/src/amqp.so --load-module /home/aconway/qpid/debug/src/linearstore.so --auth=no --log-to-file 000:broker0.log --log-to-stderr=no --data-dir /home/aconway/qpid/debug/src/tests/interop_tests.tmp/__main__.StartBroker.start_qpidd/broker0
==21790== 
==21790== Thread 7:
==21790== Invalid read of size 8
==21790==    at 0x863ED6F: pni_add_tpwork (engine.c:704)
==21790==    by 0x8642486: pn_delivery_update (engine.c:1981)
==21790==    by 0x83913B6: qpid::broker::amqp::Session::accepted(pn_delivery_t*, bool) (Session.cpp:621)
==21790==    by 0x8391CCE: qpid::broker::amqp::Session::dispatch() (Session.cpp:693)
==21790==    by 0x83371FD: qpid::broker::amqp::Connection::dispatch() (Connection.cpp:286)
==21790==    by 0x83372DF: qpid::broker::amqp::Connection::canEncode() (Connection.cpp:301)
==21790==    by 0x8386FB7: qpid::broker::amqp::Sasl::canEncode() (Sasl.cpp:94)
==21790==    by 0x594F560: qpid::sys::AsynchIOHandler::idle(qpid::sys::AsynchIO&) (AsynchIOHandler.cpp:215)
==21790==    by 0x53450F1: boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>::operator()(qpid::sys::AsynchIOHandler*, qpid::sys::AsynchIO&) const (mem_fn_template.hpp:165)
==21790==    by 0x5343F92: void boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list1<qpid::sys::AsynchIO&> >(boost::_bi::type<void>, boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>&, boost::_bi::list1<qpid::sys::AsynchIO&>&, int) (bind.hpp:313)
==21790==    by 0x5343377: void boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> > >::operator()<qpid::sys::AsynchIO>(qpid::sys::AsynchIO&) (bind_template.hpp:32)
==21790==    by 0x53426BE: boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> > >, void, qpid::sys::AsynchIO&>::invoke(boost::detail::function::function_buffer&, qpid::sys::AsynchIO&) (function_template.hpp:153)
==21790==    by 0x58B4054: boost::function1<void, qpid::sys::AsynchIO&>::operator()(qpid::sys::AsynchIO&) const (function_template.hpp:767)
==21790==    by 0x58B1C58: qpid::sys::posix::AsynchIO::writeable(qpid::sys::DispatchHandle&) (AsynchIO.cpp:582)
==21790==    by 0x58B90DF: boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>::operator()(qpid::sys::posix::AsynchIO*, qpid::sys::DispatchHandle&) const (mem_fn_template.hpp:165)
==21790==    by 0x58B84F6: void boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list1<qpid::sys::DispatchHandle&> >(boost::_bi::type<void>, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>&, boost::_bi::list1<qpid::sys::DispatchHandle&>&, int) (bind.hpp:313)
==21790==    by 0x58B780B: void boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >::operator()<qpid::sys::DispatchHandle>(qpid::sys::DispatchHandle&) (bind_template.hpp:32)
==21790==    by 0x58B676A: boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >, void, qpid::sys::DispatchHandle&>::invoke(boost::detail::function::function_buffer&, qpid::sys::DispatchHandle&) (function_template.hpp:153)
==21790==    by 0x595244A: boost::function1<void, qpid::sys::DispatchHandle&>::operator()(qpid::sys::DispatchHandle&) const (function_template.hpp:767)
==21790==    by 0x5951ACA: qpid::sys::DispatchHandle::processEvent(qpid::sys::Poller::EventType) (DispatchHandle.cpp:283)
==21790==    by 0x58DBC25: qpid::sys::Poller::Event::process() (Poller.h:131)
==21790==    by 0x58DAFFB: qpid::sys::Poller::run() (EpollPoller.cpp:522)
==21790==    by 0x5950828: qpid::sys::Dispatcher::run() (Dispatcher.cpp:37)
==21790==    by 0x58CF1DE: qpid::sys::(anonymous namespace)::runRunnable(void*) (Thread.cpp:35)
==21790==    by 0x652A554: start_thread (in /usr/lib64/libpthread-2.21.so)
==21790==    by 0x6841B9C: clone (in /usr/lib64/libc-2.21.so)
==21790==  Address 0x180 is not stack'd, malloc'd or (recently) free'd
==21790== 
==21790== 
==21790== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==21790==  Access not within mapped region at address 0x180
==21790==    at 0x863ED6F: pni_add_tpwork (engine.c:704)
==21790==    by 0x8642486: pn_delivery_update (engine.c:1981)
==21790==    by 0x83913B6: qpid::broker::amqp::Session::accepted(pn_delivery_t*, bool) (Session.cpp:621)
==21790==    by 0x8391CCE: qpid::broker::amqp::Session::dispatch() (Session.cpp:693)
==21790==    by 0x83371FD: qpid::broker::amqp::Connection::dispatch() (Connection.cpp:286)
==21790==    by 0x83372DF: qpid::broker::amqp::Connection::canEncode() (Connection.cpp:301)
==21790==    by 0x8386FB7: qpid::broker::amqp::Sasl::canEncode() (Sasl.cpp:94)
==21790==    by 0x594F560: qpid::sys::AsynchIOHandler::idle(qpid::sys::AsynchIO&) (AsynchIOHandler.cpp:215)
==21790==    by 0x53450F1: boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>::operator()(qpid::sys::AsynchIOHandler*, qpid::sys::AsynchIO&) const (mem_fn_template.hpp:165)
==21790==    by 0x5343F92: void boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list1<qpid::sys::AsynchIO&> >(boost::_bi::type<void>, boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>&, boost::_bi::list1<qpid::sys::AsynchIO&>&, int) (bind.hpp:313)
==21790==    by 0x5343377: void boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> > >::operator()<qpid::sys::AsynchIO>(qpid::sys::AsynchIO&) (bind_template.hpp:32)
==21790==    by 0x53426BE: boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> > >, void, qpid::sys::AsynchIO&>::invoke(boost::detail::function::function_buffer&, qpid::sys::AsynchIO&) (function_template.hpp:153)
==21790==    by 0x58B4054: boost::function1<void, qpid::sys::AsynchIO&>::operator()(qpid::sys::AsynchIO&) const (function_template.hpp:767)
==21790==    by 0x58B1C58: qpid::sys::posix::AsynchIO::writeable(qpid::sys::DispatchHandle&) (AsynchIO.cpp:582)
==21790==    by 0x58B90DF: boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>::operator()(qpid::sys::posix::AsynchIO*, qpid::sys::DispatchHandle&) const (mem_fn_template.hpp:165)
==21790==    by 0x58B84F6: void boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list1<qpid::sys::DispatchHandle&> >(boost::_bi::type<void>, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>&, boost::_bi::list1<qpid::sys::DispatchHandle&>&, int) (bind.hpp:313)
==21790==    by 0x58B780B: void boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >::operator()<qpid::sys::DispatchHandle>(qpid::sys::DispatchHandle&) (bind_template.hpp:32)
==21790==    by 0x58B676A: boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >, void, qpid::sys::DispatchHandle&>::invoke(boost::detail::function::function_buffer&, qpid::sys::DispatchHandle&) (function_template.hpp:153)
==21790==    by 0x595244A: boost::function1<void, qpid::sys::DispatchHandle&>::operator()(qpid::sys::DispatchHandle&) const (function_template.hpp:767)
==21790==    by 0x5951ACA: qpid::sys::DispatchHandle::processEvent(qpid::sys::Poller::EventType) (DispatchHandle.cpp:283)
==21790==    by 0x58DBC25: qpid::sys::Poller::Event::process() (Poller.h:131)
==21790==    by 0x58DAFFB: qpid::sys::Poller::run() (EpollPoller.cpp:522)
==21790==    by 0x5950828: qpid::sys::Dispatcher::run() (Dispatcher.cpp:37)
==21790==    by 0x58CF1DE: qpid::sys::(anonymous namespace)::runRunnable(void*) (Thread.cpp:35)
==21790==    by 0x652A554: start_thread (in /usr/lib64/libpthread-2.21.so)
==21790==    by 0x6841B9C: clone (in /usr/lib64/libc-2.21.so)
==21790==  If you believe this happened as a result of a stack
==21790==  overflow in your program's main thread (unlikely but
==21790==  possible), you can try to increase the size of the
==21790==  main thread stack using the --main-stacksize= flag.
==21790==  The main thread stack size used in this run was 8720384.
==21790== 
==21790== HEAP SUMMARY:
==21790==     in use at exit: 5,033,481 bytes in 6,949 blocks
==21790==   total heap usage: 33,705,273 allocs, 33,698,324 frees, 1,300,242,393 bytes allocated
==21790== 
==21790== Thread 1:
==21790== 273 (136 direct, 137 indirect) bytes in 1 blocks are definitely lost in loss record 4,557 of 4,892
==21790==    at 0x4C29158: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==21790==    by 0xA3941F2: qpid::linearstore::journal::EmptyFilePoolManager::insertPartition(unsigned short, std::string const&) (EmptyFilePoolManager.cpp:196)
==21790==    by 0xA393501: qpid::linearstore::journal::EmptyFilePoolManager::findEfpPartitions() (EmptyFilePoolManager.cpp:80)
==21790==    by 0xA3E24A9: qpid::linearstore::MessageStoreImpl::init(bool) (MessageStoreImpl.cpp:300)
==21790==    by 0xA3E0B5D: qpid::linearstore::MessageStoreImpl::init(std::string const&, unsigned short, unsigned long, bool, unsigned int, unsigned int, bool) (MessageStoreImpl.cpp:203)
==21790==    by 0xA3E093A: qpid::linearstore::MessageStoreImpl::init(qpid::Options const*) (MessageStoreImpl.cpp:177)
==21790==    by 0xA3CD530: qpid::broker::StorePlugin::earlyInitialize(qpid::Plugin::Target&) (StorePlugin.cpp:72)
==21790==    by 0x5900AF9: boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>::operator()(qpid::Plugin*, qpid::Plugin::Target&) const (mem_fn_template.hpp:165)
==21790==    by 0x59001C0: void boost::_bi::list2<boost::arg<1>, boost::reference_wrapper<qpid::Plugin::Target> >::operator()<boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list1<qpid::Plugin* const&> >(boost::_bi::type<void>, boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>&, boost::_bi::list1<qpid::Plugin* const&>&, int) (bind.hpp:313)
==21790==    by 0x58FF9EF: void boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>, boost::reference_wrapper<qpid::Plugin::Target> > >::operator()<qpid::Plugin*>(qpid::Plugin* const&) (bind_template.hpp:47)
==21790==    by 0x58FF0F8: boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>, boost::reference_wrapper<qpid::Plugin::Target> > > std::for_each<__gnu_cxx::__normal_iterator<qpid::Plugin* const*, std::vector<qpid::Plugin*, std::allocator<qpid::Plugin*> > >, boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>, boost::reference_wrapper<qpid::Plugin::Target> > > >(__gnu_cxx::__normal_iterator<qpid::Plugin* const*, std::vector<qpid::Plugin*, std::allocator<qpid::Plugin*> > >, __gnu_cxx::__normal_iterator<qpid::Plugin* const*, std::vector<qpid::Plugin*, std::allocator<qpid::Plugin*> > >, boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>, boost::reference_wrapper<qpid::Plugin::Target> > >) (stl_algo.h:3767)
==21790==    by 0x58FDFCC: void qpid::(anonymous namespace)::each_plugin<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>, boost::reference_wrapper<qpid::Plugin::Target> > > >(boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>, boost::reference_wrapper<qpid::Plugin::Target> > > const&) (Plugin.cpp:73)
==21790==    by 0x58FDED9: qpid::Plugin::earlyInitAll(qpid::Plugin::Target&) (Plugin.cpp:87)
==21790==    by 0x51ABF75: qpid::broker::Broker::Broker(qpid::broker::BrokerOptions const&) (Broker.cpp:305)
==21790==    by 0x4075CA: qpid::broker::QpiddBroker::execute(qpid::broker::QpiddOptions*) (QpiddBroker.cpp:229)
==21790==    by 0x40B8DD: qpid::broker::run_broker(int, char**, bool) (qpidd.cpp:108)
==21790==    by 0x407A55: main (QpiddBroker.cpp:249)
==21790== 
==21790== LEAK SUMMARY:
==21790==    definitely lost: 136 bytes in 1 blocks
==21790==    indirectly lost: 137 bytes in 1 blocks
==21790==      possibly lost: 869,230 bytes in 3,810 blocks
==21790==    still reachable: 4,163,978 bytes in 3,137 blocks
==21790==         suppressed: 0 bytes in 0 blocks
==21790== Reachable blocks (those to which a pointer was found) are not shown.
==21790== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==21790== 
==21790== For counts of detected and suppressed errors, rerun with: -v
==21790== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)


> qpidd crashes in the interop_tests unit test.
> ---------------------------------------------
>
>                 Key: QPID-6790
>                 URL: https://issues.apache.org/jira/browse/QPID-6790
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>    Affects Versions: qpid-cpp-0.34
>            Reporter: Ken Giusti
>            Assignee: Ken Giusti
>            Priority: Blocker
>             Fix For: qpid-cpp-next
>
>
> Crashes consistently on certain systems, like RHEL6 or Fedora 21.  Appears to be a race that leaves stale pointers to pn_delivery_t objects after a link has been closed.
> delivery passed to pni_add_tpwork has a null link ptr.  likely that the delivery has already been freed.
> Backtrace:
> Thread 1 (Thread 0x7fb832b44700 (LWP 15941)):
> #0  0x00007fb838f34c65 in pni_add_tpwork (delivery=0x7fb80c046290) at /home/chug/git/qpid-proton/proton-c/src/engine/engine.c:704
> #1  0x00007fb838f38359 in pn_delivery_update (delivery=0x7fb80c046290, state=36) at /home/chug/git/qpid-proton/proton-c/src/engine/engine.c:1981
> ---Type <return> to continue, or q <return> to quit---
> #2  0x00007fb839269e41 in qpid::broker::amqp::Session::accepted (this=0x7fb80c00f470, delivery=0x7fb80c046290, sync=true)
>     at /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Session.cpp:621
> #3  0x00007fb83926a72b in qpid::broker::amqp::Session::dispatch (this=0x7fb80c00f470) at /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Session.cpp:693
> #4  0x00007fb839211927 in qpid::broker::amqp::Connection::dispatch (this=0x7fb80c0108a8) at /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Connection.cpp:286
> #5  0x00007fb839211a3c in qpid::broker::amqp::Connection::canEncode (this=0x7fb80c0108a8) at /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Connection.cpp:301
> #6  0x00007fb83925fa24 in qpid::broker::amqp::Sasl::canEncode (this=0x7fb80c010840) at /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Sasl.cpp:94
> #7  0x00007fb83cb4d170 in qpid::sys::AsynchIOHandler::idle (this=0x7fb80c032a00) at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/AsynchIOHandler.cpp:215
> #8  0x00007fb83d397e88 in boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>::operator() (this=0x7fb80c0447d0, p=0x7fb80c032a00, a1=...)
>     at /usr/include/boost/bind/mem_fn_template.hpp:165
> #9  0x00007fb83d396bb1 in boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list1<qpid::sys::AsynchIO&> > (this=0x7fb80c0447e0, f=..., a=...) at /usr/include/boost/bind/bind.hpp:313
> #10 0x00007fb83d396060 in boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> > >::operator()<qpid::sys::AsynchIO> (this=0x7fb80c0447d0, a1=...) at /usr/include/boost/bind/bind_template.hpp:32
> #11 0x00007fb83d395412 in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>, boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1> > >, void, qpid::sys::AsynchIO&>::invoke (function_obj_ptr=..., a0=...)
>     at /usr/include/boost/function/function_template.hpp:153
> #12 0x00007fb83caae137 in boost::function1<void, qpid::sys::AsynchIO&>::operator() (this=0x7fb80c0447c8, a0=...) at /usr/include/boost/function/function_template.hpp:767
> #13 0x00007fb83caabd90 in qpid::sys::posix::AsynchIO::writeable (this=0x7fb80c0445d0, h=...) at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp:582
> #14 0x00007fb83cab31d4 in boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>::operator() (this=0x7fb80c044610, p=0x7fb80c0445d0, a1=...)
>     at /usr/include/boost/bind/mem_fn_template.hpp:165
> #15 0x00007fb83cab2507 in boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list1<qpid::sys::DispatchHandle&> > (this=0x7fb80c044620, f=..., a=...) at /usr/include/boost/bind/bind.hpp:313
> #16 0x00007fb83cab17d4 in boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >::operator()<qpid::sys::DispatchHandle> (this=0x7fb80c044610, a1=...) at /usr/include/boost/bind/bind_template.hpp:32
> #17 0x00007fb83cab07da in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >, void, qpid::sys::DispatchHandle&>::invoke (function_obj_ptr=..., a0=...)
>     at /usr/include/boost/function/function_template.hpp:153
> #18 0x00007fb83cb500e3 in boost::function1<void, qpid::sys::DispatchHandle&>::operator() (this=0x7fb80c044608, a0=...) at /usr/include/boost/function/function_template.hpp:767
> #19 0x00007fb83cb4f765 in qpid::sys::DispatchHandle::processEvent (this=0x7fb80c0445d8, type=qpid::sys::Poller::WRITABLE)
>     at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/DispatchHandle.cpp:283
> #20 0x00007fb83cad509a in qpid::sys::Poller::Event::process (this=0x7fb832b43cb0) at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/Poller.h:131
> #21 0x00007fb83cad4480 in qpid::sys::Poller::run (this=0x232c420) at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp:522
> #22 0x00007fb83cb4e473 in qpid::sys::Dispatcher::run (this=0x7ffcb83a9ae0) at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/Dispatcher.cpp:37
> #23 0x00007fb83cac87cd in qpid::sys::(anonymous namespace)::runRunnable (p=0x7ffcb83a9ae0) at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/posix/Thread.cpp:35
> #24 0x00007fb83be5852a in start_thread () from /lib64/libpthread.so.0
> #25 0x00007fb83bb9422d in clone () from /lib64/libc.so.6



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Re: [jira] [Commented] (QPID-6790) qpidd crashes in the interop_tests unit test.

Posted by Ken Giusti <kg...@redhat.com>.
I believe this is the culprit:

https://issues.apache.org/jira/browse/QPID-6563


We're freeing the pn_link while there are deliveries still referenced by qpidd.

I started an attempt to fix here, but it doesn't work (yet):

https://reviews.apache.org/r/39427/



----- Original Message -----
> From: "Alan Conway (JIRA)" <ji...@apache.org>
> To: dev@qpid.apache.org
> Sent: Wednesday, October 21, 2015 11:00:30 AM
> Subject: [jira] [Commented] (QPID-6790) qpidd crashes in the interop_tests unit test.
> 
> 
>     [
>     https://issues.apache.org/jira/browse/QPID-6790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14967274#comment-14967274
>     ]
> 
> Alan Conway commented on QPID-6790:
> -----------------------------------
> 
> Here is a valgrind trace of the problem. Unfortunately it doesn't point
> clearly to the culprit, it looks like by the time we trigger a segfault we
> have already followed a bad pointer off into the weeds and lost our way.
> 
> ==21790== Memcheck, a memory error detector
> ==21790== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
> ==21790== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
> ==21790== Command: /home/aconway/qpid/debug/src/qpidd --port 0 --interface
> 127.0.0.1 --no-module-dir --load-module /home/aconway/qpid/debug/src/amqp.so
> --load-module /home/aconway/qpid/debug/src/linearstore.so --auth=no
> --log-to-file 000:broker0.log --log-to-stderr=no --data-dir
> /home/aconway/qpid/debug/src/tests/interop_tests.tmp/__main__.StartBroker.start_qpidd/broker0
> ==21790==
> ==21790== Thread 7:
> ==21790== Invalid read of size 8
> ==21790==    at 0x863ED6F: pni_add_tpwork (engine.c:704)
> ==21790==    by 0x8642486: pn_delivery_update (engine.c:1981)
> ==21790==    by 0x83913B6:
> qpid::broker::amqp::Session::accepted(pn_delivery_t*, bool)
> (Session.cpp:621)
> ==21790==    by 0x8391CCE: qpid::broker::amqp::Session::dispatch()
> (Session.cpp:693)
> ==21790==    by 0x83371FD: qpid::broker::amqp::Connection::dispatch()
> (Connection.cpp:286)
> ==21790==    by 0x83372DF: qpid::broker::amqp::Connection::canEncode()
> (Connection.cpp:301)
> ==21790==    by 0x8386FB7: qpid::broker::amqp::Sasl::canEncode()
> (Sasl.cpp:94)
> ==21790==    by 0x594F560:
> qpid::sys::AsynchIOHandler::idle(qpid::sys::AsynchIO&)
> (AsynchIOHandler.cpp:215)
> ==21790==    by 0x53450F1: boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler,
> qpid::sys::AsynchIO&>::operator()(qpid::sys::AsynchIOHandler*,
> qpid::sys::AsynchIO&) const (mem_fn_template.hpp:165)
> ==21790==    by 0x5343F92: void
> boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> boost::arg<1> >::operator()<boost::_mfi::mf1<void,
> qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> boost::_bi::list1<qpid::sys::AsynchIO&> >(boost::_bi::type<void>,
> boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>&,
> boost::_bi::list1<qpid::sys::AsynchIO&>&, int) (bind.hpp:313)
> ==21790==    by 0x5343377: void boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> boost::arg<1> > >::operator()<qpid::sys::AsynchIO>(qpid::sys::AsynchIO&)
> (bind_template.hpp:32)
> ==21790==    by 0x53426BE:
> boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> boost::arg<1> > >, void,
> qpid::sys::AsynchIO&>::invoke(boost::detail::function::function_buffer&,
> qpid::sys::AsynchIO&) (function_template.hpp:153)
> ==21790==    by 0x58B4054: boost::function1<void,
> qpid::sys::AsynchIO&>::operator()(qpid::sys::AsynchIO&) const
> (function_template.hpp:767)
> ==21790==    by 0x58B1C58:
> qpid::sys::posix::AsynchIO::writeable(qpid::sys::DispatchHandle&)
> (AsynchIO.cpp:582)
> ==21790==    by 0x58B90DF: boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> qpid::sys::DispatchHandle&>::operator()(qpid::sys::posix::AsynchIO*,
> qpid::sys::DispatchHandle&) const (mem_fn_template.hpp:165)
> ==21790==    by 0x58B84F6: void
> boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> boost::arg<1> >::operator()<boost::_mfi::mf1<void,
> qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>,
> boost::_bi::list1<qpid::sys::DispatchHandle&> >(boost::_bi::type<void>,
> boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> qpid::sys::DispatchHandle&>&,
> boost::_bi::list1<qpid::sys::DispatchHandle&>&, int) (bind.hpp:313)
> ==21790==    by 0x58B780B: void boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> qpid::sys::DispatchHandle&>,
> boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> boost::arg<1> >
> >::operator()<qpid::sys::DispatchHandle>(qpid::sys::DispatchHandle&)
> (bind_template.hpp:32)
> ==21790==    by 0x58B676A:
> boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> qpid::sys::DispatchHandle&>,
> boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> boost::arg<1> > >, void,
> qpid::sys::DispatchHandle&>::invoke(boost::detail::function::function_buffer&,
> qpid::sys::DispatchHandle&) (function_template.hpp:153)
> ==21790==    by 0x595244A: boost::function1<void,
> qpid::sys::DispatchHandle&>::operator()(qpid::sys::DispatchHandle&) const
> (function_template.hpp:767)
> ==21790==    by 0x5951ACA:
> qpid::sys::DispatchHandle::processEvent(qpid::sys::Poller::EventType)
> (DispatchHandle.cpp:283)
> ==21790==    by 0x58DBC25: qpid::sys::Poller::Event::process() (Poller.h:131)
> ==21790==    by 0x58DAFFB: qpid::sys::Poller::run() (EpollPoller.cpp:522)
> ==21790==    by 0x5950828: qpid::sys::Dispatcher::run() (Dispatcher.cpp:37)
> ==21790==    by 0x58CF1DE: qpid::sys::(anonymous
> namespace)::runRunnable(void*) (Thread.cpp:35)
> ==21790==    by 0x652A554: start_thread (in /usr/lib64/libpthread-2.21.so)
> ==21790==    by 0x6841B9C: clone (in /usr/lib64/libc-2.21.so)
> ==21790==  Address 0x180 is not stack'd, malloc'd or (recently) free'd
> ==21790==
> ==21790==
> ==21790== Process terminating with default action of signal 11 (SIGSEGV):
> dumping core
> ==21790==  Access not within mapped region at address 0x180
> ==21790==    at 0x863ED6F: pni_add_tpwork (engine.c:704)
> ==21790==    by 0x8642486: pn_delivery_update (engine.c:1981)
> ==21790==    by 0x83913B6:
> qpid::broker::amqp::Session::accepted(pn_delivery_t*, bool)
> (Session.cpp:621)
> ==21790==    by 0x8391CCE: qpid::broker::amqp::Session::dispatch()
> (Session.cpp:693)
> ==21790==    by 0x83371FD: qpid::broker::amqp::Connection::dispatch()
> (Connection.cpp:286)
> ==21790==    by 0x83372DF: qpid::broker::amqp::Connection::canEncode()
> (Connection.cpp:301)
> ==21790==    by 0x8386FB7: qpid::broker::amqp::Sasl::canEncode()
> (Sasl.cpp:94)
> ==21790==    by 0x594F560:
> qpid::sys::AsynchIOHandler::idle(qpid::sys::AsynchIO&)
> (AsynchIOHandler.cpp:215)
> ==21790==    by 0x53450F1: boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler,
> qpid::sys::AsynchIO&>::operator()(qpid::sys::AsynchIOHandler*,
> qpid::sys::AsynchIO&) const (mem_fn_template.hpp:165)
> ==21790==    by 0x5343F92: void
> boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> boost::arg<1> >::operator()<boost::_mfi::mf1<void,
> qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> boost::_bi::list1<qpid::sys::AsynchIO&> >(boost::_bi::type<void>,
> boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>&,
> boost::_bi::list1<qpid::sys::AsynchIO&>&, int) (bind.hpp:313)
> ==21790==    by 0x5343377: void boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> boost::arg<1> > >::operator()<qpid::sys::AsynchIO>(qpid::sys::AsynchIO&)
> (bind_template.hpp:32)
> ==21790==    by 0x53426BE:
> boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> boost::arg<1> > >, void,
> qpid::sys::AsynchIO&>::invoke(boost::detail::function::function_buffer&,
> qpid::sys::AsynchIO&) (function_template.hpp:153)
> ==21790==    by 0x58B4054: boost::function1<void,
> qpid::sys::AsynchIO&>::operator()(qpid::sys::AsynchIO&) const
> (function_template.hpp:767)
> ==21790==    by 0x58B1C58:
> qpid::sys::posix::AsynchIO::writeable(qpid::sys::DispatchHandle&)
> (AsynchIO.cpp:582)
> ==21790==    by 0x58B90DF: boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> qpid::sys::DispatchHandle&>::operator()(qpid::sys::posix::AsynchIO*,
> qpid::sys::DispatchHandle&) const (mem_fn_template.hpp:165)
> ==21790==    by 0x58B84F6: void
> boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> boost::arg<1> >::operator()<boost::_mfi::mf1<void,
> qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>,
> boost::_bi::list1<qpid::sys::DispatchHandle&> >(boost::_bi::type<void>,
> boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> qpid::sys::DispatchHandle&>&,
> boost::_bi::list1<qpid::sys::DispatchHandle&>&, int) (bind.hpp:313)
> ==21790==    by 0x58B780B: void boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> qpid::sys::DispatchHandle&>,
> boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> boost::arg<1> >
> >::operator()<qpid::sys::DispatchHandle>(qpid::sys::DispatchHandle&)
> (bind_template.hpp:32)
> ==21790==    by 0x58B676A:
> boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> qpid::sys::DispatchHandle&>,
> boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> boost::arg<1> > >, void,
> qpid::sys::DispatchHandle&>::invoke(boost::detail::function::function_buffer&,
> qpid::sys::DispatchHandle&) (function_template.hpp:153)
> ==21790==    by 0x595244A: boost::function1<void,
> qpid::sys::DispatchHandle&>::operator()(qpid::sys::DispatchHandle&) const
> (function_template.hpp:767)
> ==21790==    by 0x5951ACA:
> qpid::sys::DispatchHandle::processEvent(qpid::sys::Poller::EventType)
> (DispatchHandle.cpp:283)
> ==21790==    by 0x58DBC25: qpid::sys::Poller::Event::process() (Poller.h:131)
> ==21790==    by 0x58DAFFB: qpid::sys::Poller::run() (EpollPoller.cpp:522)
> ==21790==    by 0x5950828: qpid::sys::Dispatcher::run() (Dispatcher.cpp:37)
> ==21790==    by 0x58CF1DE: qpid::sys::(anonymous
> namespace)::runRunnable(void*) (Thread.cpp:35)
> ==21790==    by 0x652A554: start_thread (in /usr/lib64/libpthread-2.21.so)
> ==21790==    by 0x6841B9C: clone (in /usr/lib64/libc-2.21.so)
> ==21790==  If you believe this happened as a result of a stack
> ==21790==  overflow in your program's main thread (unlikely but
> ==21790==  possible), you can try to increase the size of the
> ==21790==  main thread stack using the --main-stacksize= flag.
> ==21790==  The main thread stack size used in this run was 8720384.
> ==21790==
> ==21790== HEAP SUMMARY:
> ==21790==     in use at exit: 5,033,481 bytes in 6,949 blocks
> ==21790==   total heap usage: 33,705,273 allocs, 33,698,324 frees,
> 1,300,242,393 bytes allocated
> ==21790==
> ==21790== Thread 1:
> ==21790== 273 (136 direct, 137 indirect) bytes in 1 blocks are definitely
> lost in loss record 4,557 of 4,892
> ==21790==    at 0x4C29158: operator new(unsigned long) (in
> /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21790==    by 0xA3941F2:
> qpid::linearstore::journal::EmptyFilePoolManager::insertPartition(unsigned
> short, std::string const&) (EmptyFilePoolManager.cpp:196)
> ==21790==    by 0xA393501:
> qpid::linearstore::journal::EmptyFilePoolManager::findEfpPartitions()
> (EmptyFilePoolManager.cpp:80)
> ==21790==    by 0xA3E24A9: qpid::linearstore::MessageStoreImpl::init(bool)
> (MessageStoreImpl.cpp:300)
> ==21790==    by 0xA3E0B5D:
> qpid::linearstore::MessageStoreImpl::init(std::string const&, unsigned
> short, unsigned long, bool, unsigned int, unsigned int, bool)
> (MessageStoreImpl.cpp:203)
> ==21790==    by 0xA3E093A:
> qpid::linearstore::MessageStoreImpl::init(qpid::Options const*)
> (MessageStoreImpl.cpp:177)
> ==21790==    by 0xA3CD530:
> qpid::broker::StorePlugin::earlyInitialize(qpid::Plugin::Target&)
> (StorePlugin.cpp:72)
> ==21790==    by 0x5900AF9: boost::_mfi::mf1<void, qpid::Plugin,
> qpid::Plugin::Target&>::operator()(qpid::Plugin*, qpid::Plugin::Target&)
> const (mem_fn_template.hpp:165)
> ==21790==    by 0x59001C0: void boost::_bi::list2<boost::arg<1>,
> boost::reference_wrapper<qpid::Plugin::Target>
> >::operator()<boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>,
> boost::_bi::list1<qpid::Plugin* const&> >(boost::_bi::type<void>,
> boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>&,
> boost::_bi::list1<qpid::Plugin* const&>&, int) (bind.hpp:313)
> ==21790==    by 0x58FF9EF: void boost::_bi::bind_t<void,
> boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>,
> boost::_bi::list2<boost::arg<1>,
> boost::reference_wrapper<qpid::Plugin::Target> >
> >::operator()<qpid::Plugin*>(qpid::Plugin* const&) (bind_template.hpp:47)
> ==21790==    by 0x58FF0F8: boost::_bi::bind_t<void, boost::_mfi::mf1<void,
> qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>,
> boost::reference_wrapper<qpid::Plugin::Target> > >
> std::for_each<__gnu_cxx::__normal_iterator<qpid::Plugin* const*,
> std::vector<qpid::Plugin*, std::allocator<qpid::Plugin*> > >,
> boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin,
> qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>,
> boost::reference_wrapper<qpid::Plugin::Target> > >
> >(__gnu_cxx::__normal_iterator<qpid::Plugin* const*,
> std::vector<qpid::Plugin*, std::allocator<qpid::Plugin*> > >,
> __gnu_cxx::__normal_iterator<qpid::Plugin* const*,
> std::vector<qpid::Plugin*, std::allocator<qpid::Plugin*> > >,
> boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin,
> qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>,
> boost::reference_wrapper<qpid::Plugin::Target> > >) (stl_algo.h:3767)
> ==21790==    by 0x58FDFCC: void qpid::(anonymous
> namespace)::each_plugin<boost::_bi::bind_t<void, boost::_mfi::mf1<void,
> qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>,
> boost::reference_wrapper<qpid::Plugin::Target> > >
> >(boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::Plugin,
> qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>,
> boost::reference_wrapper<qpid::Plugin::Target> > > const&) (Plugin.cpp:73)
> ==21790==    by 0x58FDED9: qpid::Plugin::earlyInitAll(qpid::Plugin::Target&)
> (Plugin.cpp:87)
> ==21790==    by 0x51ABF75:
> qpid::broker::Broker::Broker(qpid::broker::BrokerOptions const&)
> (Broker.cpp:305)
> ==21790==    by 0x4075CA:
> qpid::broker::QpiddBroker::execute(qpid::broker::QpiddOptions*)
> (QpiddBroker.cpp:229)
> ==21790==    by 0x40B8DD: qpid::broker::run_broker(int, char**, bool)
> (qpidd.cpp:108)
> ==21790==    by 0x407A55: main (QpiddBroker.cpp:249)
> ==21790==
> ==21790== LEAK SUMMARY:
> ==21790==    definitely lost: 136 bytes in 1 blocks
> ==21790==    indirectly lost: 137 bytes in 1 blocks
> ==21790==      possibly lost: 869,230 bytes in 3,810 blocks
> ==21790==    still reachable: 4,163,978 bytes in 3,137 blocks
> ==21790==         suppressed: 0 bytes in 0 blocks
> ==21790== Reachable blocks (those to which a pointer was found) are not
> shown.
> ==21790== To see them, rerun with: --leak-check=full --show-leak-kinds=all
> ==21790==
> ==21790== For counts of detected and suppressed errors, rerun with: -v
> ==21790== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
> 
> 
> > qpidd crashes in the interop_tests unit test.
> > ---------------------------------------------
> >
> >                 Key: QPID-6790
> >                 URL: https://issues.apache.org/jira/browse/QPID-6790
> >             Project: Qpid
> >          Issue Type: Bug
> >          Components: C++ Broker
> >    Affects Versions: qpid-cpp-0.34
> >            Reporter: Ken Giusti
> >            Assignee: Ken Giusti
> >            Priority: Blocker
> >             Fix For: qpid-cpp-next
> >
> >
> > Crashes consistently on certain systems, like RHEL6 or Fedora 21.  Appears
> > to be a race that leaves stale pointers to pn_delivery_t objects after a
> > link has been closed.
> > delivery passed to pni_add_tpwork has a null link ptr.  likely that the
> > delivery has already been freed.
> > Backtrace:
> > Thread 1 (Thread 0x7fb832b44700 (LWP 15941)):
> > #0  0x00007fb838f34c65 in pni_add_tpwork (delivery=0x7fb80c046290) at
> > /home/chug/git/qpid-proton/proton-c/src/engine/engine.c:704
> > #1  0x00007fb838f38359 in pn_delivery_update (delivery=0x7fb80c046290,
> > state=36) at /home/chug/git/qpid-proton/proton-c/src/engine/engine.c:1981
> > ---Type <return> to continue, or q <return> to quit---
> > #2  0x00007fb839269e41 in qpid::broker::amqp::Session::accepted
> > (this=0x7fb80c00f470, delivery=0x7fb80c046290, sync=true)
> >     at /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Session.cpp:621
> > #3  0x00007fb83926a72b in qpid::broker::amqp::Session::dispatch
> > (this=0x7fb80c00f470) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Session.cpp:693
> > #4  0x00007fb839211927 in qpid::broker::amqp::Connection::dispatch
> > (this=0x7fb80c0108a8) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Connection.cpp:286
> > #5  0x00007fb839211a3c in qpid::broker::amqp::Connection::canEncode
> > (this=0x7fb80c0108a8) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Connection.cpp:301
> > #6  0x00007fb83925fa24 in qpid::broker::amqp::Sasl::canEncode
> > (this=0x7fb80c010840) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/broker/amqp/Sasl.cpp:94
> > #7  0x00007fb83cb4d170 in qpid::sys::AsynchIOHandler::idle
> > (this=0x7fb80c032a00) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/sys/AsynchIOHandler.cpp:215
> > #8  0x00007fb83d397e88 in boost::_mfi::mf1<void,
> > qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>::operator()
> > (this=0x7fb80c0447d0, p=0x7fb80c032a00, a1=...)
> >     at /usr/include/boost/bind/mem_fn_template.hpp:165
> > #9  0x00007fb83d396bb1 in
> > boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> > boost::arg<1> >::operator()<boost::_mfi::mf1<void,
> > qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> > boost::_bi::list1<qpid::sys::AsynchIO&> > (this=0x7fb80c0447e0, f=...,
> > a=...) at /usr/include/boost/bind/bind.hpp:313
> > #10 0x00007fb83d396060 in boost::_bi::bind_t<void, boost::_mfi::mf1<void,
> > qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> > boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> > boost::arg<1> > >::operator()<qpid::sys::AsynchIO> (this=0x7fb80c0447d0,
> > a1=...) at /usr/include/boost/bind/bind_template.hpp:32
> > #11 0x00007fb83d395412 in
> > boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,
> > boost::_mfi::mf1<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&>,
> > boost::_bi::list2<boost::_bi::value<qpid::sys::AsynchIOHandler*>,
> > boost::arg<1> > >, void, qpid::sys::AsynchIO&>::invoke
> > (function_obj_ptr=..., a0=...)
> >     at /usr/include/boost/function/function_template.hpp:153
> > #12 0x00007fb83caae137 in boost::function1<void,
> > qpid::sys::AsynchIO&>::operator() (this=0x7fb80c0447c8, a0=...) at
> > /usr/include/boost/function/function_template.hpp:767
> > #13 0x00007fb83caabd90 in qpid::sys::posix::AsynchIO::writeable
> > (this=0x7fb80c0445d0, h=...) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/sys/posix/AsynchIO.cpp:582
> > #14 0x00007fb83cab31d4 in boost::_mfi::mf1<void,
> > qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>::operator()
> > (this=0x7fb80c044610, p=0x7fb80c0445d0, a1=...)
> >     at /usr/include/boost/bind/mem_fn_template.hpp:165
> > #15 0x00007fb83cab2507 in
> > boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> > boost::arg<1> >::operator()<boost::_mfi::mf1<void,
> > qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>,
> > boost::_bi::list1<qpid::sys::DispatchHandle&> > (this=0x7fb80c044620,
> > f=..., a=...) at /usr/include/boost/bind/bind.hpp:313
> > #16 0x00007fb83cab17d4 in boost::_bi::bind_t<void, boost::_mfi::mf1<void,
> > qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>,
> > boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> > boost::arg<1> > >::operator()<qpid::sys::DispatchHandle>
> > (this=0x7fb80c044610, a1=...) at
> > /usr/include/boost/bind/bind_template.hpp:32
> > #17 0x00007fb83cab07da in
> > boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,
> > boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO,
> > qpid::sys::DispatchHandle&>,
> > boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>,
> > boost::arg<1> > >, void, qpid::sys::DispatchHandle&>::invoke
> > (function_obj_ptr=..., a0=...)
> >     at /usr/include/boost/function/function_template.hpp:153
> > #18 0x00007fb83cb500e3 in boost::function1<void,
> > qpid::sys::DispatchHandle&>::operator() (this=0x7fb80c044608, a0=...) at
> > /usr/include/boost/function/function_template.hpp:767
> > #19 0x00007fb83cb4f765 in qpid::sys::DispatchHandle::processEvent
> > (this=0x7fb80c0445d8, type=qpid::sys::Poller::WRITABLE)
> >     at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/DispatchHandle.cpp:283
> > #20 0x00007fb83cad509a in qpid::sys::Poller::Event::process
> > (this=0x7fb832b43cb0) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/sys/Poller.h:131
> > #21 0x00007fb83cad4480 in qpid::sys::Poller::run (this=0x232c420) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp:522
> > #22 0x00007fb83cb4e473 in qpid::sys::Dispatcher::run (this=0x7ffcb83a9ae0)
> > at /home/chug/git/qpid/qpid/cpp/src/qpid/sys/Dispatcher.cpp:37
> > #23 0x00007fb83cac87cd in qpid::sys::(anonymous namespace)::runRunnable
> > (p=0x7ffcb83a9ae0) at
> > /home/chug/git/qpid/qpid/cpp/src/qpid/sys/posix/Thread.cpp:35
> > #24 0x00007fb83be5852a in start_thread () from /lib64/libpthread.so.0
> > #25 0x00007fb83bb9422d in clone () from /lib64/libc.so.6
> 
> 
> 
> --
> This message was sent by Atlassian JIRA
> (v6.3.4#6332)
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
> For additional commands, e-mail: dev-help@qpid.apache.org
> 
> 

-- 
-K

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org