First Last Prev Next    No search results available
Details
: Potential deadlock(?) or as designed
Bug#: 172
: AuxUtils Cpp
: AuxUtils Core
Status: CLOSED
Resolution: FIXED
: PC
: All
: 0.5
: Undefined
: critical

:
Category: Bug Report
:
:
  Show dependency tree - Show dependency graph
People
Reporter: arufanov <arufanov@gmail.com>
Assigned To: Abdullah Abdurakhmanov <abdulla.abdurakhmanov@gmail.com>

Attachments


Note

You need to log in before you can comment on or make changes to this bug.

Related actions


Description:   Opened: 2008-01-09 07:44
Here is ThreadPool methods:
                void ThreadPool::wait(TaskId nTaskId) {                 
                        boost::recursive_mutex::scoped_lock oLock (m_mxTasks);


                void ThreadPool::schedule(Handler const &pfHandler) {
                        boost::recursive_mutex::scoped_lock oLock (m_mxTasks);

Thread 1: wait (lock mutex and wait untill thread 2 finish to work)
Thread 2: schedule (wait untill thread 1 unlock m_mxTasks mutex)


Is it potential deadlock or as designed functionality?
------- Comment #1 From arufanov 2008-01-11 05:24:59 -------
Bug is not fixed: Here is call stacks:

Thread1:
        NTDLL.DLL!77f88f13()    
        [Frames below may be incorrect and/or missing, no symbols loaded for
NTDLL.DLL] 
        NTDLL.DLL!77f8f295()    
        NTDLL.DLL!77f87f26()    
        libCppUtilsd.dll!`anonymous
namespace'::wait_critical_section_infinite(void * mutex=0x005b8a18)  Line 99   
    C++
        libCppUtilsd.dll!boost::recursive_mutex::do_lock()  Line 58 + 0xb bytes
C++
       
libCppUtilsd.dll!boost::detail::thread::lock_ops<boost::recursive_mutex>::lock(boost::recursive_mutex
& m={...})  Line 34       C++
       
libCppUtilsd.dll!boost::detail::thread::scoped_lock<boost::recursive_mutex>::lock()
 Line 76 + 0xb bytes        C++
       
libCppUtilsd.dll!boost::detail::thread::scoped_lock<boost::recursive_mutex>::scoped_lock<boost::recursive_mutex>(boost::recursive_mutex
& mx={...}, bool initially_locked=true)  Line 67        C++
>	libCppUtilsd.dll!cpputils::ept::ThreadPool::wait(unsigned long nTaskId=2)  Line 196 + 0x1d bytes	C++
        libShmemd.dll!anthill::shmem::ShmemAcceptor::releaseAcceptorTask() 
Line 109 + 0x15 bytes       C++
        libShmemd.dll!anthill::shmem::ShmemAcceptor::stop()  Line 76    C++
        UnitTestsd.exe!testShmemConnection::test_method()  Line 77 + 0x26 bytes
C++
        UnitTestsd.exe!testShmemConnection_invoker()  Line 32 + 0x277 bytes    
C++
       
UnitTestsd.exe!boost::unit_test::ut_detail::invoker<boost::unit_test::ut_detail::unused>::invoke<void
(__cdecl*)(void)>(void (void)* & f=0x00461010)  Line 56 + 0x2c bytes      C++
       
UnitTestsd.exe!boost::unit_test::ut_detail::callback0_impl_t<boost::unit_test::ut_detail::unused,void
(__cdecl*)(void)>::invoke()  Line 89 + 0x41 bytes C++
       
UnitTestsd.exe!boost::unit_test::callback0<boost::unit_test::ut_detail::unused>::operator()()
 Line 118 + 0x25 bytes    C++
        UnitTestsd.exe!boost::unit_test::`anonymous
namespace'::zero_return_wrapper_t<boost::unit_test::callback0<boost::unit_test::ut_detail::unused>
>::operator()()  Line 41 + 0x17 bytes    C++
       
UnitTestsd.exe!boost::unit_test::ut_detail::invoker<int>::invoke<boost::unit_test::`anonymous
namespace'::zero_return_wrapper_t<boost::unit_test::callback0<boost::unit_test::ut_detail::unused>
>
>(boost::unit_test::`anonymous-namespace'::zero_return_wrapper_t<boost::unit_test::callback0<boost::unit_test::ut_detail::unused>
> & f={...})  Line 42 + 0xf bytes  C++
       
UnitTestsd.exe!boost::unit_test::ut_detail::callback0_impl_t<int,boost::unit_test::`anonymous
namespace'::zero_return_wrapper_t<boost::unit_test::callback0<boost::unit_test::ut_detail::unused>
> >::invoke()  Line 89 + 0x1d bytes    C++
        UnitTestsd.exe!boost::unit_test::callback0<int>::operator()()  Line 118
+ 0x21 bytes    C++
        UnitTestsd.exe!boost::execution_monitor::catch_signals(const
boost::unit_test::callback0<int> & F={...}, bool __formal=true, bool
__formal=true)  Line 497 + 0x36 bytes C++
        UnitTestsd.exe!boost::execution_monitor::execute(const
boost::unit_test::callback0<int> & F={...}, bool catch_system_errors=true, int
timeout=0)  Line 225 + 0x17 bytes C++
       
UnitTestsd.exe!boost::unit_test::unit_test_monitor_t::execute_and_translate(const
boost::unit_test::test_case & tc={...})  Line 65 + 0x4d bytes C++
        UnitTestsd.exe!boost::unit_test::framework_impl::visit(const
boost::unit_test::test_case & tc={...})  Line 135 + 0xf bytes      C++
        UnitTestsd.exe!boost::unit_test::traverse_test_tree(const
boost::unit_test::test_case & tc={...}, boost::unit_test::test_tree_visitor &
V={...})  Line 155      C++
        UnitTestsd.exe!boost::unit_test::traverse_test_tree(unsigned long
id=65540, boost::unit_test::test_tree_visitor & V={...})  Line 193 + 0x16 bytes
      C++
        UnitTestsd.exe!boost::unit_test::traverse_test_tree(const
boost::unit_test::test_suite & suite={...}, boost::unit_test::test_tree_visitor
& V={...})  Line 168 + 0xd bytes      C++
        UnitTestsd.exe!boost::unit_test::traverse_test_tree(unsigned long id=1,
boost::unit_test::test_tree_visitor & V={...})  Line 195 + 0x16 bytes   C++
        UnitTestsd.exe!boost::unit_test::framework::run(unsigned long id=1,
bool continue_test=true)  Line 396 + 0xf bytes      C++
        UnitTestsd.exe!boost::unit_test::unit_test_main(int argc=3, char * *
argv=0x005b5c60)  Line 61 + 0x9 bytes      C++
        UnitTestsd.exe!main(int argc=3, char * * argv=0x005b5c60)  Line 99 +
0xd bytes  C++
        UnitTestsd.exe!__tmainCRTStartup()  Line 586 + 0x19 bytes       C
        UnitTestsd.exe!mainCRTStartup()  Line 403       C
        KERNEL32.DLL!7c5989a5()         

Thread2:
        NTDLL.DLL!77f88f13()    
        [Frames below may be incorrect and/or missing, no symbols loaded for
NTDLL.DLL] 
        NTDLL.DLL!77f8f295()    
        NTDLL.DLL!77f87f26()    
        libCppUtilsd.dll!`anonymous
namespace'::wait_critical_section_infinite(void * mutex=0x005b8c08)  Line 99   
    C++
        libCppUtilsd.dll!boost::recursive_mutex::do_lock()  Line 58 + 0xb bytes
C++
       
libCppUtilsd.dll!boost::detail::thread::lock_ops<boost::recursive_mutex>::lock(boost::recursive_mutex
& m={...})  Line 34       C++
       
libCppUtilsd.dll!boost::detail::thread::scoped_lock<boost::recursive_mutex>::lock()
 Line 76 + 0xb bytes        C++
       
libCppUtilsd.dll!boost::detail::thread::scoped_lock<boost::recursive_mutex>::scoped_lock<boost::recursive_mutex>(boost::recursive_mutex
& mx={...}, bool initially_locked=true)  Line 67        C++
        libCppUtilsd.dll!cpputils::ept::ThreadPool::schedule(unsigned long
nTaskId=2, const boost::function0<void,std::allocator<boost::function_base> > &
pfHandler={...})  Line 134 + 0x11 bytes      C++
>	libShmemd.dll!anthill::shmem::ShmemAcceptor::scheduleAccepting()  Line 134 + 0x4f bytes	C++
        libShmemd.dll!anthill::shmem::ShmemAcceptor::acceptConnection()  Line
146 + 0x8 bytes   C++
       
libShmemd.dll!boost::_mfi::mf0<void,anthill::shmem::ShmemAcceptor>::operator()(anthill::shmem::ShmemAcceptor
* p=0x005b8790)  Line 49 + 0xc bytes       C++
       
libShmemd.dll!boost::_bi::list1<boost::_bi::value<anthill::shmem::ShmemAcceptor
*>
>::operator()<boost::_mfi::mf0<void,anthill::shmem::ShmemAcceptor>,boost::_bi::list0>(boost::_bi::type<void>
__formal={...}, boost::_mfi::mf0<void,anthill::shmem::ShmemAcceptor> & f={...},
boost::_bi::list0 & a={...}, boost::_bi::type<void> __formal={...})  Line 232  
C++
       
libShmemd.dll!boost::_bi::bind_t<void,boost::_mfi::mf0<void,anthill::shmem::ShmemAcceptor>,boost::_bi::list1<boost::_bi::value<anthill::shmem::ShmemAcceptor
*> > >::operator()()  Line 21      C++
       
libShmemd.dll!boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void,boost::_mfi::mf0<void,anthill::shmem::ShmemAcceptor>,boost::_bi::list1<boost::_bi::value<anthill::shmem::ShmemAcceptor
*> > >,void>::invoke(boost::detail::function::function_buffer &
function_obj_ptr={...})  Line 156      C++
       
libCppUtilsd.dll!boost::function0<void,std::allocator<boost::function_base>
>::operator()()  Line 692 + 0x13 bytes      C++
       
libCppUtilsd.dll!cpputils::ept::ThreadPool::TasksStorageItem::executeHandler() 
Line 138 + 0x2e bytes   C++
        libCppUtilsd.dll!cpputils::ept::ThreadPool::onRunTask(unsigned int
m_nSystemTaskId=1)  Line 248 C++
       
libCppUtilsd.dll!boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned
int>::operator()(cpputils::ept::ThreadPool * p=0x005b8ad8, unsigned int a1=1) 
Line 162 + 0x10 bytes  C++
       
libCppUtilsd.dll!boost::_bi::list2<boost::_bi::value<cpputils::ept::ThreadPool
*>,boost::_bi::value<unsigned long>
>::operator()<boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned
int>,boost::_bi::list0>(boost::_bi::type<void> __formal={...},
boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned int> & f={...},
boost::_bi::list0 & a={...}, boost::_bi::type<void> __formal={...})  Line 289
C++
       
libCppUtilsd.dll!boost::_bi::bind_t<void,boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned
int>,boost::_bi::list2<boost::_bi::value<cpputils::ept::ThreadPool
*>,boost::_bi::value<unsigned long> > >::operator()()  Line 21     C++
       
libCppUtilsd.dll!boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void,boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned
int>,boost::_bi::list2<boost::_bi::value<cpputils::ept::ThreadPool
*>,boost::_bi::value<unsigned long> >
>,void>::invoke(boost::detail::function::function_buffer &
function_obj_ptr={...})  Line 156     C++
       
libCppUtilsd.dll!boost::function0<void,std::allocator<boost::function_base>
>::operator()()  Line 692 + 0x13 bytes      C++
        libCppUtilsd.dll!thread_proxy(void * param=0x0012e500)  Line 110       
C++
        msvcr80d.dll!_callthreadstartex()  Line 348 + 0xf bytes C
        msvcr80d.dll!_threadstartex(void * ptd=0x005b91e8)  Line 331    C
        KERNEL32.DLL!7c57b396()         


Thread3:
        NTDLL.DLL!77f88f13()    
        [Frames below may be incorrect and/or missing, no symbols loaded for
NTDLL.DLL] 
        KERNEL32.DLL!7c59a072()         
        KERNEL32.DLL!7c57b3e9()         
        libCppUtilsd.dll!boost::detail::condition_impl::do_wait()  Line 199 +
0xf bytes C++
>	libCppUtilsd.dll!boost::condition::do_wait<boost::recursive_mutex>(boost::recursive_mutex & mutex={...})  Line 155	C++
       
libCppUtilsd.dll!boost::condition::wait<boost::detail::thread::scoped_lock<boost::recursive_mutex>
>(boost::detail::thread::scoped_lock<boost::recursive_mutex> & lock={...}) 
Line 94  C++
        libCppUtilsd.dll!cpputils::ept::ThreadPool::onRunTask(unsigned int
m_nSystemTaskId=1)  Line 232 C++
       
libCppUtilsd.dll!boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned
int>::operator()(cpputils::ept::ThreadPool * p=0x005bc8a0, unsigned int a1=1) 
Line 162 + 0x10 bytes  C++
       
libCppUtilsd.dll!boost::_bi::list2<boost::_bi::value<cpputils::ept::ThreadPool
*>,boost::_bi::value<unsigned long>
>::operator()<boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned
int>,boost::_bi::list0>(boost::_bi::type<void> __formal={...},
boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned int> & f={...},
boost::_bi::list0 & a={...}, boost::_bi::type<void> __formal={...})  Line 289
C++
       
libCppUtilsd.dll!boost::_bi::bind_t<void,boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned
int>,boost::_bi::list2<boost::_bi::value<cpputils::ept::ThreadPool
*>,boost::_bi::value<unsigned long> > >::operator()()  Line 21     C++
       
libCppUtilsd.dll!boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void,boost::_mfi::mf1<void,cpputils::ept::ThreadPool,unsigned
int>,boost::_bi::list2<boost::_bi::value<cpputils::ept::ThreadPool
*>,boost::_bi::value<unsigned long> >
>,void>::invoke(boost::detail::function::function_buffer &
function_obj_ptr={...})  Line 156     C++
       
libCppUtilsd.dll!boost::function0<void,std::allocator<boost::function_base>
>::operator()()  Line 692 + 0x13 bytes      C++
        libCppUtilsd.dll!thread_proxy(void * param=0x00b5df28)  Line 110       
C++
        msvcr80d.dll!_callthreadstartex()  Line 348 + 0xf bytes C
        msvcr80d.dll!_threadstartex(void * ptd=0x005bcf18)  Line 331    C
        KERNEL32.DLL!7c57b396()         
------- Comment #2 From arufanov 2009-01-27 07:38:49 -------
Invalid Pool usage.

First Last Prev Next    No search results available