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 2009/08/12 13:22:14 UTC

[jira] Updated: (QPID-2046) Closing of a federation link done on management thread, not links own io thread

     [ https://issues.apache.org/jira/browse/QPID-2046?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gordon Sim updated QPID-2046:
-----------------------------

    Status: Ready To Review  (was: In Progress)

> Closing of a federation link done on management thread, not links own io thread
> -------------------------------------------------------------------------------
>
>                 Key: QPID-2046
>                 URL: https://issues.apache.org/jira/browse/QPID-2046
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>    Affects Versions: 0.5
>            Reporter: Gordon Sim
>            Assignee: Gordon Sim
>            Priority: Blocker
>             Fix For: 0.6
>
>
> This allows concurrent closingof a connection that may be processing incoming or outgoing frames on another thread. The Link::destory() method should not call connection->close() on the management connections thread but should request the io thread for the link itself and do the close on that.
> E.g. The following is from a core dump running reliable_replication_test (which is currently failing reliably):
> Core was generated by `/var/lib/ptolemy/sources/qpid/cpp/src/.libs/lt-qpidd --daemon --port 0 --no-dat'.
> Program terminated with signal 11, Segmentation fault.
> [New process 2138]
> [New process 2139]
> [New process 2137]
> [New process 2136]
> [New process 2135]
> [New process 2134]
> #0  0x00002b81d22cb229 in main_arena () from /lib64/libc.so.6
> (gdb) thread apply all bt
> Thread 6 (process 2134):
> #0  0x00002b81d22db5b5 in pthread_sigmask () from /lib64/libpthread.so.0
> #1  0x00002b81d1575a8c in qpid::sys::Poller::wait () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #2  0x00002b81d15763f7 in qpid::sys::Poller::run () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #3  0x00002b81d110cc36 in qpid::broker::Broker::run () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #4  0x000000000040916b in QpiddDaemon::child ()
> #5  0x00002b81d1125e0e in qpid::broker::Daemon::fork () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #6  0x0000000000406a73 in QpiddBroker::execute ()
> #7  0x0000000000405488 in main ()
> Thread 5 (process 2135):
> #0  0x00002b81d22dab00 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00002b81d16393e2 in qpid::sys::Timer::run () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #2  0x00002b81d156cc5a in qpid::sys::(anonymous namespace)::runRunnable ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #3  0x00002b81d22d6367 in start_thread () from /lib64/libpthread.so.0
> #4  0x00002b81d204c09d in clone () from /lib64/libc.so.6
> Thread 4 (process 2136):
> #0  0x00002b81d2057e5e in __lll_lock_wait_private () from /lib64/libc.so.6
> #1  0x00002b81d1fef934 in _L_lock_15421 () from /lib64/libc.so.6
> #2  0x00002b81d1fee901 in free () from /lib64/libc.so.6
> #3  0x00002b81d1119b15 in qpid::broker::Connection::close ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #4  0x00002b81d1152715 in qpid::broker::Link::destroy () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #5  0x00002b81d1152fa1 in qpid::broker::Link::ManagementMethod ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #6  0x00002b81d10dca04 in qmf::org::apache::qpid::broker::Link::doMethod ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #7  0x00002b81d11e15ee in qpid::management::ManagementAgent::handleMethodRequestLH ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #8  0x00002b81d11e5183 in qpid::management::ManagementAgent::dispatchAgentCommandLH ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #9  0x00002b81d11e54bb in qpid::management::ManagementAgent::dispatchCommand ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #10 0x00002b81d11ea3c8 in qpid::broker::ManagementExchange::route ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> ---Type <return> to continue, or q <return> to quit---
> #11 0x00002b81d11a200d in qpid::broker::SemanticState::route ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #12 0x00002b81d11a2de1 in qpid::broker::SemanticState::handle ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #13 0x00002b81d11c746e in qpid::broker::SessionState::handleContent ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #14 0x00002b81d11c7932 in qpid::broker::SessionState::handleIn ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #15 0x00002b81d160256a in qpid::amqp_0_10::SessionHandler::handleIn ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #16 0x00002b81d111a172 in qpid::broker::Connection::received ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #17 0x00002b81d10fba06 in qpid::amqp_0_10::Connection::decode ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #18 0x00002b81d162db67 in qpid::sys::AsynchIOHandler::readbuff ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #19 0x00002b81d11ec478 in boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::_mfi::mf2<bool, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>, boost::_bi::list3<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1>, boost::arg<2> > >, bool, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>::invoke ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #20 0x00002b81d156aa8f in boost::function2<bool, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*, std::allocator<boost::function_base> >::operator() () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #21 0x00002b81d1568c7c in qpid::sys::posix::AsynchIO::readable ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #22 0x00002b81d1632def in boost::function1<void, qpid::sys::DispatchHandle&, std::allocator<boost::function_base> >::operator() () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #23 0x00002b81d1631a8b in qpid::sys::DispatchHandle::processEvent ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #24 0x00002b81d15763e8 in qpid::sys::Poller::run () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #25 0x00002b81d156cc5a in qpid::sys::(anonymous namespace)::runRunnable ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #26 0x00002b81d22d6367 in start_thread () from /lib64/libpthread.so.0
> #27 0x00002b81d204c09d in clone () from /lib64/libc.so.6
> Thread 3 (process 2137):
> #0  0x00002b81d204c488 in epoll_wait () from /lib64/libc.so.6
> #1  0x00002b81d1575aa3 in qpid::sys::Poller::wait () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #2  0x00002b81d15763f7 in qpid::sys::Poller::run () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> ---Type <return> to continue, or q <return> to quit---
> #3  0x00002b81d156cc5a in qpid::sys::(anonymous namespace)::runRunnable ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #4  0x00002b81d22d6367 in start_thread () from /lib64/libpthread.so.0
> #5  0x00002b81d204c09d in clone () from /lib64/libc.so.6
> Thread 2 (process 2139):
> #0  0x00002b81d204c488 in epoll_wait () from /lib64/libc.so.6
> #1  0x00002b81d1575aa3 in qpid::sys::Poller::wait () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #2  0x00002b81d15763f7 in qpid::sys::Poller::run () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #3  0x00002b81d156cc5a in qpid::sys::(anonymous namespace)::runRunnable ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #4  0x00002b81d22d6367 in start_thread () from /lib64/libpthread.so.0
> #5  0x00002b81d204c09d in clone () from /lib64/libc.so.6
> Thread 1 (process 2138):
> #0  0x00002b81d22cb229 in main_arena () from /lib64/libc.so.6
> #1  0x00002b81d11c36c5 in qpid::broker::SessionState::enqueued ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #2  0x00002b81d11c74cf in qpid::broker::SessionState::handleContent ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #3  0x00002b81d11c7932 in qpid::broker::SessionState::handleIn ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #4  0x00002b81d160256a in qpid::amqp_0_10::SessionHandler::handleIn ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #5  0x00002b81d111a172 in qpid::broker::Connection::received ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #6  0x00002b81d10fba06 in qpid::amqp_0_10::Connection::decode ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #7  0x00002b81d162db67 in qpid::sys::AsynchIOHandler::readbuff ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #8  0x00002b81d11ec478 in boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::_mfi::mf2<bool, qpid::sys::AsynchIOHandler, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>, boost::_bi::list3<boost::_bi::value<qpid::sys::AsynchIOHandler*>, boost::arg<1>, boost::arg<2> > >, bool, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*>::invoke ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidbroker.so.2
> #9  0x00002b81d156aa8f in boost::function2<bool, qpid::sys::AsynchIO&, qpid::sys::AsynchIOBufferBase*, std::allocator<boost::function_base> >::operator() () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #10 0x00002b81d1568c7c in qpid::sys::posix::AsynchIO::readable ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> ---Type <return> to continue, or q <return> to quit---
> #11 0x00002b81d1632def in boost::function1<void, qpid::sys::DispatchHandle&, std::allocator<boost::function_base> >::operator() () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #12 0x00002b81d1631a8b in qpid::sys::DispatchHandle::processEvent ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #13 0x00002b81d15763e8 in qpid::sys::Poller::run () from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #14 0x00002b81d156cc5a in qpid::sys::(anonymous namespace)::runRunnable ()
>    from /var/lib/ptolemy/sources/qpid/cpp/src/.libs/libqpidcommon.so.2
> #15 0x00002b81d22d6367 in start_thread () from /lib64/libpthread.so.0
> #16 0x00002b81d204c09d in clone () from /lib64/libc.so.6

-- 
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