You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Chuck Rolke (JIRA)" <ji...@apache.org> on 2014/11/21 17:43:33 UTC
[jira] [Updated] (QPID-5950) C++ Broker Windows Timer launches two
simultaneous QueueCleaner::purge instances (was: invalid heap)
[ https://issues.apache.org/jira/browse/QPID-5950?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chuck Rolke updated QPID-5950:
------------------------------
Summary: C++ Broker Windows Timer launches two simultaneous QueueCleaner::purge instances (was: invalid heap) (was: C++ Broker (Windows) invalid heap)
> C++ Broker Windows Timer launches two simultaneous QueueCleaner::purge instances (was: invalid heap)
> ----------------------------------------------------------------------------------------------------
>
> Key: QPID-5950
> URL: https://issues.apache.org/jira/browse/QPID-5950
> Project: Qpid
> Issue Type: Bug
> Components: C++ Broker
> Affects Versions: 0.28
> Environment: Windows Server 2012 R2, Visual Studio 2008 32-bit
> Reporter: Chuck Rolke
>
> Start broker with
> {noformat}
> qpidd --auth no --no-data-dir --load-module ..\plugins\broker\amqpd.dll
> {noformat}
> Then launch a series (24000+) HelloWorld clients at it one at a time.
> The broker fails with stack:
> {noformat}
> msvcp90d.dll!std::_Debug_message(const wchar_t * message=0x634c28d0, const wchar_t * file=0x634bdee0, unsigned int line=1948) Line 24 C++
> > qpidcommond.dll!std::_Debug_heap<std::_Vector_iterator<boost::intrusive_ptr<qpid::sys::TimerTask>,std::allocator<boost::intrusive_ptr<qpid::sys::TimerTask> > >,std::less<boost::intrusive_ptr<qpid::sys::TimerTask> > >(std::_Vector_iterator<boost::intrusive_ptr<qpid::sys::TimerTask>,std::allocator<boost::intrusive_ptr<qpid::sys::TimerTask> > > _First={px=0x0133aa18 }, std::_Vector_iterator<boost::intrusive_ptr<qpid::sys::TimerTask>,std::allocator<boost::intrusive_ptr<qpid::sys::TimerTask> > > _Last={px=0x01276bf0 }, std::less<boost::intrusive_ptr<qpid::sys::TimerTask> > _Pred=less) Line 1948 + 0x17 bytes C++
> qpidcommond.dll!std::push_heap<std::_Vector_iterator<boost::intrusive_ptr<qpid::sys::TimerTask>,std::allocator<boost::intrusive_ptr<qpid::sys::TimerTask> > >,std::less<boost::intrusive_ptr<qpid::sys::TimerTask> > >(std::_Vector_iterator<boost::intrusive_ptr<qpid::sys::TimerTask>,std::allocator<boost::intrusive_ptr<qpid::sys::TimerTask> > > _First={px=0x01276bf0 }, std::_Vector_iterator<boost::intrusive_ptr<qpid::sys::TimerTask>,std::allocator<boost::intrusive_ptr<qpid::sys::TimerTask> > > _Last={px=0xcdcdcdcd }, std::less<boost::intrusive_ptr<qpid::sys::TimerTask> > _Pred=less) Line 2043 + 0x42 bytes C++
> qpidcommond.dll!std::priority_queue<boost::intrusive_ptr<qpid::sys::TimerTask>,std::vector<boost::intrusive_ptr<qpid::sys::TimerTask>,std::allocator<boost::intrusive_ptr<qpid::sys::TimerTask> > >,std::less<boost::intrusive_ptr<qpid::sys::TimerTask> > >::push(const boost::intrusive_ptr<qpid::sys::TimerTask> & _Pred={...}) Line 212 + 0x49 bytes C++
> qpidcommond.dll!qpid::sys::Timer::add(boost::intrusive_ptr<qpid::sys::TimerTask> task={...}) Line 196 C++
> qpidbrokerd.dll!qpid::broker::QueueCleaner::purge(const std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > & batch=[1]({px=0x012a59c0 pn={...} })) Line 86 C++
> qpidbrokerd.dll!boost::_mfi::mf1<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,qpid::broker::QueueCleaner,std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &>::operator()(qpid::broker::QueueCleaner * p=0x0127a398, const std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > & a1=[1]({px=0x012a59c0 pn={...} })) Line 165 + 0x14 bytes C++
> qpidbrokerd.dll!boost::_bi::list2<boost::_bi::value<qpid::broker::QueueCleaner *>,boost::arg<1> >::operator()<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,boost::_mfi::mf1<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,qpid::broker::QueueCleaner,std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &>,boost::_bi::list1<std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &> >(boost::_bi::type<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1> > __formal={...}, boost::_mfi::mf1<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,qpid::broker::QueueCleaner,std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &> & f={...}, boost::_bi::list1<std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &> & a={...}, boost::_bi::type<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1> > __formal={...}) Line 303 + 0x36 bytes C++
> qpidbrokerd.dll!boost::_bi::bind_t<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,boost::_mfi::mf1<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,qpid::broker::QueueCleaner,std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &>,boost::_bi::list2<boost::_bi::value<qpid::broker::QueueCleaner *>,boost::arg<1> > >::operator()<std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > >(const std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > & a1=[1]({px=0x012a59c0 pn={...} })) Line 47 + 0x23 bytes C++
> qpidbrokerd.dll!boost::detail::function::function_obj_invoker1<boost::_bi::bind_t<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,boost::_mfi::mf1<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,qpid::broker::QueueCleaner,std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &>,boost::_bi::list2<boost::_bi::value<qpid::broker::QueueCleaner *>,boost::arg<1> > >,std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &>::invoke(boost::detail::function::function_buffer & function_obj_ptr={...}, const std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > & a0=[1]({px=0x012a59c0 pn={...} })) Line 132 + 0x10 bytes C++
> qpidbrokerd.dll!boost::function1<std::_Deque_const_iterator<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> >,1>,std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > const &>::operator()(const std::deque<boost::shared_ptr<qpid::broker::Queue>,std::allocator<boost::shared_ptr<qpid::broker::Queue> > > & a0=[1]({px=0x012a59c0 pn={...} })) Line 760 + 0x1e bytes C++
> qpidbrokerd.dll!qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> >::process() Line 152 + 0x19 bytes C++
> qpidbrokerd.dll!qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> >::dispatch(qpid::sys::PollableCondition & cond={...}) Line 139 C++
> qpidbrokerd.dll!boost::_mfi::mf1<void,qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> >,qpid::sys::PollableCondition &>::operator()(qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> > * p=0x0127a3b0, qpid::sys::PollableCondition & a1={...}) Line 165 + 0x10 bytes C++
> qpidbrokerd.dll!boost::_bi::list2<boost::_bi::value<qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> > *>,boost::arg<1> >::operator()<boost::_mfi::mf1<void,qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> >,qpid::sys::PollableCondition &>,boost::_bi::list1<qpid::sys::PollableCondition &> >(boost::_bi::type<void> __formal={...}, boost::_mfi::mf1<void,qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> >,qpid::sys::PollableCondition &> & f={...}, boost::_bi::list1<qpid::sys::PollableCondition &> & a={...}, boost::_bi::type<void> __formal={...}) Line 314 C++
> qpidbrokerd.dll!boost::_bi::bind_t<void,boost::_mfi::mf1<void,qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> >,qpid::sys::PollableCondition &>,boost::_bi::list2<boost::_bi::value<qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> > *>,boost::arg<1> > >::operator()<qpid::sys::PollableCondition>(qpid::sys::PollableCondition & a1={...}) Line 33 C++
> qpidbrokerd.dll!boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,boost::_mfi::mf1<void,qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> >,qpid::sys::PollableCondition &>,boost::_bi::list2<boost::_bi::value<qpid::sys::PollableQueue<boost::shared_ptr<qpid::broker::Queue> > *>,boost::arg<1> > >,void,qpid::sys::PollableCondition &>::invoke(boost::detail::function::function_buffer & function_obj_ptr={...}, qpid::sys::PollableCondition & a0={...}) Line 154 C++
> qpidcommond.dll!boost::function1<void,qpid::sys::PollableCondition &>::operator()(qpid::sys::PollableCondition & a0={...}) Line 760 + 0x1a bytes C++
> qpidcommond.dll!qpid::sys::PollableConditionPrivate::dispatch(qpid::sys::windows::AsynchIoResult * result=0x012f8f48) Line 85 C++
> qpidcommond.dll!boost::_mfi::mf1<void,qpid::sys::PollableConditionPrivate,qpid::sys::windows::AsynchIoResult *>::operator()(qpid::sys::PollableConditionPrivate * p=0x0127ae30, qpid::sys::windows::AsynchIoResult * a1=0x012f8f48) Line 165 + 0x10 bytes C++
> qpidcommond.dll!boost::_bi::list2<boost::_bi::value<qpid::sys::PollableConditionPrivate *>,boost::arg<1> >::operator()<boost::_mfi::mf1<void,qpid::sys::PollableConditionPrivate,qpid::sys::windows::AsynchIoResult *>,boost::_bi::list1<qpid::sys::windows::AsynchIoResult * &> >(boost::_bi::type<void> __formal={...}, boost::_mfi::mf1<void,qpid::sys::PollableConditionPrivate,qpid::sys::windows::AsynchIoResult *> & f={...}, boost::_bi::list1<qpid::sys::windows::AsynchIoResult * &> & a={...}, boost::_bi::type<void> __formal={...}) Line 314 C++
> qpidcommond.dll!boost::_bi::bind_t<void,boost::_mfi::mf1<void,qpid::sys::PollableConditionPrivate,qpid::sys::windows::AsynchIoResult *>,boost::_bi::list2<boost::_bi::value<qpid::sys::PollableConditionPrivate *>,boost::arg<1> > >::operator()<qpid::sys::windows::AsynchIoResult *>(qpid::sys::windows::AsynchIoResult * & a1=0x012f8f48) Line 33 C++
> qpidcommond.dll!boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,boost::_mfi::mf1<void,qpid::sys::PollableConditionPrivate,qpid::sys::windows::AsynchIoResult *>,boost::_bi::list2<boost::_bi::value<qpid::sys::PollableConditionPrivate *>,boost::arg<1> > >,void,qpid::sys::windows::AsynchIoResult *>::invoke(boost::detail::function::function_buffer & function_obj_ptr={...}, qpid::sys::windows::AsynchIoResult * a0=0x012f8f48) Line 154 C++
> qpidcommond.dll!boost::function1<void,qpid::sys::windows::AsynchIoResult *>::operator()(qpid::sys::windows::AsynchIoResult * a0=0x012f8f48) Line 760 + 0x1a bytes C++
> qpidcommond.dll!qpid::sys::windows::AsynchCallbackRequest::complete() Line 189 C++
> qpidcommond.dll!qpid::sys::windows::AsynchResult::success(unsigned int bytesTransferred=0) Line 57 + 0xf bytes C++
> qpidcommond.dll!qpid::sys::Poller::wait(qpid::sys::Duration timeout={...}) Line 196 + 0x12 bytes C++
> qpidcommond.dll!qpid::sys::Poller::run() Line 118 C++
> qpidcommond.dll!qpid::sys::Dispatcher::run() Line 37 + 0x1d bytes C++
> qpidcommond.dll!qpid::sys::runThreadPrivate(void * p=0x0127f2f0) Line 145 + 0x15 bytes C++
> msvcr90d.dll!_callthreadstartex() Line 348 + 0xf bytes C
> msvcr90d.dll!_threadstartex(void * ptd=0x01286c70) Line 331 C
> kernel32.dll!7547919f()
> [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
> ntdll.dll!776fa22b()
> ntdll.dll!776fa201()
> {noformat}
> This broker was run from the command line and the debug focus was on the client and not the broker. I'll re-run the test with more instrumentation on the broker and post results here.
--
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