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

Chuck Rolke resolved QPID-5950.
-------------------------------
       Resolution: Fixed
    Fix Version/s: 0.31

This was fixed by gsim, r1636848 while improving queue cleaner. See QPID-6213

> 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
>             Fix For: 0.31
>
>         Attachments: qpid-5950-diff.txt, qpid-5950-log.txt
>
>
> 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to