You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Ted Ross (JIRA)" <qp...@incubator.apache.org> on 2010/08/30 21:06:53 UTC
[jira] Resolved: (QPID-2481) Deadlock in Qpid 0.6
[ https://issues.apache.org/jira/browse/QPID-2481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ted Ross resolved QPID-2481.
----------------------------
Fix Version/s: 0.7
Resolution: Fixed
This issue was fixed in 0.7 by Ken Giusti around r934561.
> Deadlock in Qpid 0.6
> --------------------
>
> Key: QPID-2481
> URL: https://issues.apache.org/jira/browse/QPID-2481
> Project: Qpid
> Issue Type: Bug
> Components: C++ Broker
> Affects Versions: 0.6
> Environment: 64 bit; gcc (Debian 4.3.2-1.1) 4.3.2; Linux search-eu002a 2.6.32.8-CORE2_64 #1 SMP Wed Feb 10 15:49:58 CET 2010 x86_64 GNU/Linux; cpp-qpid 0.6
> Reporter: Daniel Etzold
> Assignee: Ted Ross
> Fix For: 0.7
>
>
> Hi,
> I think I've found a deadlock while running the cpp broker 0.6. Since strace does not report any activity in the borker I attached with the gdb. Here's the gdb output:
> Listing of threads:
> (gdb) info thr
> 10 Thread 0x417f9950 (LWP 5061) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> 9 Thread 0x41ffa950 (LWP 5062) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> 8 Thread 0x427fb950 (LWP 5063) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> 7 Thread 0x42ffc950 (LWP 5064) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> 6 Thread 0x437fd950 (LWP 5065) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> 5 Thread 0x40e3c950 (LWP 5066) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> * 4 Thread 0x43ffe950 (LWP 5067) 0x00007f3655944176 in pthread_rwlock_rdlock () from /lib/libpthread.so.0
> 3 Thread 0x447ff950 (LWP 5068) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> 2 Thread 0x45000950 (LWP 5069) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> 1 Thread 0x7f3657f21770 (LWP 5060) 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> When switching to thread 4 and examining the mutex I found that the mutex's owner is thread 6 (__writer = 5065).
> (gdb) thr 4
> [Switching to thread 4 (Thread 0x43ffe950 (LWP 5067))]#0 0x00007f3655944176 in pthread_rwlock_rdlock () from /lib/libpthread.so.0
> (gdb) bt
> #0 0x00007f3655944176 in pthread_rwlock_rdlock () from /lib/libpthread.so.0
> #1 0x00007f3657981b80 in qpid::sys::RWlock::rlock (this=0x178bcf8) at ../include/qpid/sys/posix/Mutex.h:141
> #2 0x00007f3657981e2d in ScopedRlock (this=0x43fec700, l=@0x178bcf8) at ../include/qpid/sys/Mutex.h:53
> #3 0x00007f3657a3f52c in qpid::broker::TopicExchange::route (this=0x178bcc0, msg=@0x43fec850, routingKey=@0x43fecb40) at qpid/broker/TopicExchange.cpp:300
> #4 0x00007f3657a6a5ee in qpid::broker::ManagementExchange::route (this=0x178bcb0, msg=@0x43fec850, routingKey=@0x43fecb40, args=0x0)
> at qpid/management/ManagementExchange.cpp:52
> #5 0x00007f3657a4e635 in qpid::management::ManagementAgent::sendBuffer (this=0x7f3657ef0010, buf=@0x43fecad0, length=138, exchange=
> {px = 0x43fecb10, pn = {pi_ = 0x8a43fec870}}, routingKey=
> {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M _p = 0x43fecb40 "¨Ü016\025\v6\177"}}) at qpid/management/ManagementAgent.cpp:317
> #6 0x00007f3657a58c55 in qpid::management::ManagementAgent::addObject (this=0x7f3657ef0010, object=0x7f35be205680, persistId=0, publishNow=true)
> at qpid/management/ManagementAgent.cpp:207
> #7 0x00007f365793fc42 in Connection (this=0x7f35be242900, out_=0x7f35be23b228, broker_=@0x17816a0, mgmtId_=@0x7f364c59b0e8, ssf=0, isLink_=false, objectId=0)
> at qpid/broker/Connection.cpp:101
> #8 0x00007f36579fb1bc in qpid::broker::SecureConnectionFactory::create (this=0x1787ef0, v={major_ = 0 '\0', minor_ = 10 '\n'}, out=@0x7f364c59b0e0,
> id=@0x7f364c59b0e8, conn_ssf=0) at qpid/broker/SecureConnectionFactory.cpp:50
> #9 0x00007f365741eabe in qpid::sys::AsynchIOHandler::readbuff (this=0x7f364c59b0e0, buff=0x7f363996fbb0) at qpid/sys/AsynchIOHandler.cpp:147
> #10 0x00007f3657a6d74f in boost::_mfi::mf2<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>::operator() (
> this=0x7f35be2447a0, p=0x7f364c59b0e0, a1=@0x7f35be244640, a2=0x7f363996fbb0) at /usr/include/boost/bind/mem_fn_template.hpp:274
> #11 0x00007f3657a6ebdb in boost::_bi::list3<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1>, boost::arg<2> >::operator()<boost::_mfi::mf2<void, qpid ::sys::AsynchIOHandler, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>, boost::_bi::list2<qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*&> > (
> this=0x7f35be2447b0, f=@0x7f35be2447a0, a=@0x43ffd850) at /usr/include/boost/bind.hpp:371
> #12 0x00007f3657a6ec4f in boost::_bi::bind_t<void, boost::_mfi::mf2<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>, boost ::_bi::list3<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1>, boost::arg<2> > >::operator()<qpid::sys::AsynchIO, qpid::sys::AsynchIOBufferBase*> (
> this=0x7f35be2447a0, a1=@0x7f35be244640, a2=@0x43ffd888) at /usr/include/boost/bind/bind_template.hpp:61
> #13 0x00007f3657a6eca1 in boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, qpid::sys::AsynchIOHandler, qpid::sy s::AsynchIO&, qpid::sys::AsynchIOBufferBase*>, boost::_bi::list3<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1>, boost::arg<2> > >, void, qpid::sys ::AsynchIO&, qpid::sys::AsynchIOBufferBase*>::invoke (function_obj_ptr=@0x7f35be2447a0, a0=@0x7f35be244640, a1=0x7f363996fbb0)
> at /usr/include/boost/function/function_template.hpp:152
> #14 0x00007f36572ce1f9 in boost::function2<void, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>::operator() (this=0x7f35be244798, a0=@0x7f35be244640,
> a1=0x7f363996fbb0) at /usr/include/boost/function/function_template.hpp:989
> #15 0x00007f36572c3c56 in qpid::sys::posix::AsynchIO::readable (this=0x7f35be244640, h=@0x7f35be244648) at qpid/sys/posix/AsynchIO.cpp:435
> #16 0x00007f36572cbc87 in boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>::operator() (this=0x7f35be244660, p=0x7f35be244640,
> a1=@0x7f35be244648) at /usr/include/boost/bind/mem_fn_template.hpp:162
> #17 0x00007f36572cc7c5 in boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, qpid::sys::posix::A synchIO, qpid::sys::DispatchHandle&>, boost::_bi::list1<qpid::sys::DispatchHandle&> > (this=0x7f35be244670, f=@0x7f35be244660, a=@0x43ffdc40)
> at /usr/include/boost/bind.hpp:292
> #18 0x00007f36572cc82f in boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::v alue<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >::operator()<qpid::sys::DispatchHandle> (this=0x7f35be244660, a1=@0x7f35be244648)
> at /usr/include/boost/bind/bind_template.hpp:32
> #19 0x00007f36572cc879 in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sy s::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >, void, qpid::sys::DispatchHandle&>::invoke (
> function_obj_ptr=@0x7f35be244660, a0=@0x7f35be244648) at /usr/include/boost/function/function_template.hpp:152
> #20 0x00007f36574288a3 in boost::function1<void, qpid::sys::DispatchHandle&>::operator() (this=0x7f35be244658, a0=@0x7f35be244648)
> at /usr/include/boost/function/function_template.hpp:989
> #21 0x00007f3657420afb in qpid::sys::DispatchHandle::processEvent (this=0x7f35be244648, type=qpid::sys::Poller::READABLE) at qpid/sys/DispatchHandle.cpp:278
> #22 0x00007f36572dccf2 in qpid::sys::Poller::Event::process (this=0x43ffde20) at ./qpid/sys/Poller.h:123
> #23 0x00007f36572dc23b in qpid::sys::Poller::run (this=0x17809d0) at qpid/sys/epoll/EpollPoller.cpp:483
> #24 0x00007f36574288f7 in qpid::sys::Dispatcher::run (this=0x7fffcd3894b0) at qpid/sys/Dispatcher.cpp:37
> #25 0x00007f36572d2743 in runRunnable (p=0x7fffcd3894b0) at qpid/sys/posix/Thread.cpp:35
> #26 0x00007f3655940fc7 in start_thread () from /lib/libpthread.so.0
> #27 0x00007f3655c255ad in clone () from /lib/libc.so.6
> #28 0x0000000000000000 in ?? ()
> (gdb) frame 1
> #1 0x00007f3657981b80 in qpid::sys::RWlock::rlock (this=0x178bcf8) at ../include/qpid/sys/posix/Mutex.h:141
> 141 ../include/qpid/sys/posix/Mutex.h: No such file or directory.
> in ../include/qpid/sys/posix/Mutex.h
> (gdb) p *this
> $12 = {<boost::noncopyable_::noncopyable> = {<No data fields>}, rwlock = {__data = {__lock = 0, __nr_readers = 0, __readers_wakeup = 1, __writer_wakeup = 0,
> __nr_readers_queued = 1, __nr_writers_queued = 0, __writer = 5065, __shared = 0, __pad1 = 0, __pad2 = 0, __flags = 0},
> __size = "\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000ÉÜ023", '\0' <repeats 26 times>, "6\177\000",
> __align = 0}}
> Switching to thread 6 we can see that the mutex owner is thread 4 (__owner = 5067).
> (gdb) thr 6
> [Switching to thread 6 (Thread 0x437fd950 (LWP 5065))]#0 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> (gdb) bt
> #0 0x00007f3655947384 in __lll_lock_wait () from /lib/libpthread.so.0
> #1 0x00007f3655942c0b in _L_lock_312 () from /lib/libpthread.so.0
> #2 0x00007f3655942631 in pthread_mutex_lock () from /lib/libpthread.so.0
> #3 0x00007f36578bcc76 in qpid::sys::Mutex::lock (this=0x7f3657ef00f0) at ../include/qpid/sys/posix/Mutex.h:116
> #4 0x00007f36578bcf23 in ScopedLock (this=0x437fa590, l=@0x7f3657ef00f0) at ../include/qpid/sys/Mutex.h:33
> #5 0x00007f3657a4cac2 in qpid::management::ManagementAgent::allocateId (this=0x7f3657ef0010, object=0x7f35b1c13c10) at qpid/management/ManagementAgent.cpp:1288
> #6 0x00007f3657975542 in Binding (this=0x7f35b1c13c10, _key=@0x437fa820, _queue={px = 0x437fa780, pn = {pi_ = 0x437fa820}}, parent=0x178bd30, _args=
> {values = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::shared_ptr<qpid::framing::FieldValue> > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<ch ar>, std::allocator<char> >, boost::shared_ptr<qpid::framing::FieldValue> > > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function< std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = 24689968, _M_parent = 0x437fa780, _M_left = 0x437fa820, _M_right = 0x7f35b1c13c10}, _M_node_count = 0}}}},
> origin=@0x437fa830) at qpid/broker/Exchange.cpp:328
> #7 0x00007f3657a402f6 in qpid::broker::TopicExchange::bind (this=0x178bcc0, queue={px = 0x437fa8c0, pn = {pi_ = 0x178bcc0}}, routingKey=@0x437faa20,
> args=0x7f35b1c0e888) at qpid/broker/TopicExchange.cpp:209
> #8 0x00007f3657a6a45f in qpid::broker::ManagementExchange::bind (this=0x178bcb0, queue={px = 0x437faa50, pn = {pi_ = 0x178bcb0}}, routingKey=@0x437faa20,
> args=0x7f35b1c0e888) at qpid/management/ManagementExchange.cpp:60
> #9 0x00007f3657a1dc9b in qpid::broker::SessionAdapter::ExchangeHandlerImpl::bind (this=0x7f35b1c0b800, queueName=@0x7f35b1c0e870, exchangeName=@0x7f35b1c0e878,
> routingKey=@0x7f35b1c0e880, arguments=@0x7f35b1c0e888) at qpid/broker/SessionAdapter.cpp:189
> #10 0x00007f36573206c8 in qpid::framing::ExchangeBindBody::invoke<qpid::framing::AMQP_ServerOperations::ExchangeHandler> (this=0x7f35b1c0e860,
> invocable=@0x7f35b1c0b800) at ./qpid/framing/ExchangeBindBody.h:88
> #11 0x00007f3657319316 in qpid::framing::AMQP_ServerOperations::ExchangeHandler::Invoker::visit (this=0x437fada0, body=@0x7f35b1c0e860)
> at qpid/framing/ServerInvoker.cpp:642
> #12 0x00007f3657328121 in qpid::framing::ExchangeBindBody::accept (this=0x7f35b1c0e860, v=@0x437fada0) at ./qpid/framing/ExchangeBindBody.h:92
> #13 0x00007f365731b3b8 in qpid::framing::AMQP_ServerOperations::Invoker::visit (this=0x437fae50, body=@0x7f35b1c0e860) at qpid/framing/ServerInvoker.cpp:353
> #14 0x00007f3657328121 in qpid::framing::ExchangeBindBody::accept (this=0x7f35b1c0e860, v=@0x437fae50) at ./qpid/framing/ExchangeBindBody.h:92
> #15 0x00007f3657a3c975 in qpid::framing::invoke<qpid::broker::SessionAdapter> (target=@0x7f35b1c0b7e8, body=@0x7f35b1c0e860) at ./qpid/framing/Invoker.h:67
> #16 0x00007f3657a35e43 in qpid::broker::SessionState::handleCommand (this=0x7f35b1c0b4b0, method=0x7f35b1c0e860, id=@0x437fb100)
> at qpid/broker/SessionState.cpp:197
> #17 0x00007f3657a362b8 in qpid::broker::SessionState::handleIn (this=0x7f35b1c0b4b0, frame=@0x437fbce0) at qpid/broker/SessionState.cpp:329
> #18 0x00007f3657a3af3b in qpid::framing::Handler<qpid::framing::AMQFrame&>::MemFunRef<qpid::framing::Handler<qpid::framing::AMQFrame&>::InOutHandlerInterface, &(q pid::framing::Handler<qpid::framing::AMQFrame&>::InOutHandlerInterface::handleIn(qpid::framing::AMQFrame&))>::handle (this=0x7f35b1c0b640, t=@0x437fbce0)
> at ./qpid/framing/Handler.h:67
> #19 0x00007f36573d59da in qpid::amqp_0_10::SessionHandler::handleIn (this=0x7f35b1c0c770, f=@0x437fbce0) at qpid/amqp_0_10/SessionHandler.cpp:93
> #20 0x00007f3657a3af3b in qpid::framing::Handler<qpid::framing::AMQFrame&>::MemFunRef<qpid::framing::Handler<qpid::framing::AMQFrame&>::InOutHandlerInterface, &(q pid::framing::Handler<qpid::framing::AMQFrame&>::InOutHandlerInterface::handleIn(qpid::framing::AMQFrame&))>::handle (this=0x7f35b1c0c780, t=@0x437fbce0)
> at ./qpid/framing/Handler.h:67
> #21 0x00007f365794110b in qpid::framing::Handler<qpid::framing::AMQFrame&>::operator() (this=0x7f35b1c0c780, t=@0x437fbce0) at ./qpid/framing/Handler.h:42
> #22 0x00007f365794dec1 in qpid::broker::ConnectionHandler::handle (this=0x7f35b1c10120, frame=@0x437fbce0) at qpid/broker/ConnectionHandler.cpp:70
> #23 0x00007f365793e4e8 in qpid::broker::Connection::received (this=0x7f35b1c0ff40, frame=@0x437fbce0) at qpid/broker/Connection.cpp:138
> #24 0x00007f36578ffb36 in qpid::amqp_0_10::Connection::decode (this=0x7f35b1c602b0, buffer=0x7f35be3822c0 "\017\001", size=71)
> at qpid/amqp_0_10/Connection.cpp:58
> #25 0x00007f36579f9fff in qpid::broker::SecureConnection::decode (this=0x7f35b1a42fe0, buffer=0x7f35be3822c0 "\017\001", size=71)
> at qpid/broker/SecureConnection.cpp:42
> #26 0x00007f365741e59d in qpid::sys::AsynchIOHandler::readbuff (this=0x7f35be206e80, buff=0x7f35be0fe6b0) at qpid/sys/AsynchIOHandler.cpp:134
> #27 0x00007f3657a6d74f in boost::_mfi::mf2<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>::operator() (
> this=0x7f35be209090, p=0x7f35be206e80, a1=@0x7f35be208f30, a2=0x7f35be0fe6b0) at /usr/include/boost/bind/mem_fn_template.hpp:274
> #28 0x00007f3657a6ebdb in boost::_bi::list3<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1>, boost::arg<2> >::operator()<boost::_mfi::mf2<void, qpid ::sys::AsynchIOHandler, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>, boost::_bi::list2<qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*&> > (
> this=0x7f35be2090a0, f=@0x7f35be209090, a=@0x437fc850) at /usr/include/boost/bind.hpp:371
> #29 0x00007f3657a6ec4f in boost::_bi::bind_t<void, boost::_mfi::mf2<void, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>, boost ::_bi::list3<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1>, boost::arg<2> > >::operator()<qpid::sys::AsynchIO, qpid::sys::AsynchIOBufferBase*> (
> this=0x7f35be209090, a1=@0x7f35be208f30, a2=@0x437fc888) at /usr/include/boost/bind/bind_template.hpp:61
> #30 0x00007f3657a6eca1 in boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, qpid::sys::AsynchIOHandler, qpid::sy s::AsynchIO&, qpid::sys::AsynchIOBufferBase*>, boost::_bi::list3<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1>, boost::arg<2> > >, void, qpid::sys ::AsynchIO&, qpid::sys::AsynchIOBufferBase*>::invoke (function_obj_ptr=@0x7f35be209090, a0=@0x7f35be208f30, a1=0x7f35be0fe6b0)
> at /usr/include/boost/function/function_template.hpp:152
> #31 0x00007f36572ce1f9 in boost::function2<void, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>::operator() (this=0x7f35be209088, a0=@0x7f35be208f30,
> a1=0x7f35be0fe6b0) at /usr/include/boost/function/function_template.hpp:989
> #32 0x00007f36572c3c56 in qpid::sys::posix::AsynchIO::readable (this=0x7f35be208f30, h=@0x7f35be208f38) at qpid/sys/posix/AsynchIO.cpp:435
> #33 0x00007f36572cbc87 in boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>::operator() (this=0x7f35be208f50, p=0x7f35be208f30,
> a1=@0x7f35be208f38) at /usr/include/boost/bind/mem_fn_template.hpp:162
> #34 0x00007f36572cc7c5 in boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, qpid::sys::posix::A synchIO, qpid::sys::DispatchHandle&>, boost::_bi::list1<qpid::sys::DispatchHandle&> > (this=0x7f35be208f60, f=@0x7f35be208f50, a=@0x437fcc40)
> at /usr/include/boost/bind.hpp:292
> #35 0x00007f36572cc82f in boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::v alue<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >::operator()<qpid::sys::DispatchHandle> (this=0x7f35be208f50, a1=@0x7f35be208f38)
> at /usr/include/boost/bind/bind_template.hpp:32
> #36 0x00007f36572cc879 in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sy s::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >, void, qpid::sys::DispatchHandle&>::invoke (
> ---Type <return> to continue, or q <return> to quit---q
> function_obj_Quit
> (gdb) frame 3
> #3 0x00007f36578bcc76 in qpid::sys::Mutex::lock (this=0x7f3657ef00f0) at ../include/qpid/sys/posix/Mutex.h:116
> 116 ../include/qpid/sys/posix/Mutex.h: No such file or directory.
> in ../include/qpid/sys/posix/Mutex.h
> (gdb) p *this
> $13 = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex = {__data = {__lock = 2, __count = 1, __owner = 5067, __nusers = 1, __kind = 1,
> __spins = 0, __list = {__prev = 0x0, __next = 0x0}},
> __size = "\002\000\000\000\001\000\000\000ËÜ023\000\000\001\000\000\000\001", '\0' <repeats 22 times>, __align = 4294967298}}
> Let's summarize:
> [5067] thread 4 tries a readlock on the mutex (which is already (write)locked by thread 6)
> [5065] thread 6 tries a lock on the mutex (which is already owned/locked by thread 4)
> I experience such things quiet often.
> Regards,
> Daniel
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org