Bug #140

rsbtest_spread randomly crashes

Added by J. Wienke over 13 years ago. Updated over 13 years ago.

Status:ResolvedStart date:11/10/2010
Priority:NormalDue date:
Assignee:J. Wienke% Done:

100%

Category:C++
Target version:-

Description

Threading issue with stopping the executor, I suppose:

(gdb) bt
#0  0x0000000002039420 in ?? ()
#1  0x00007f3948b38ae3 in rsb::spread::ReceiverTask::execute (this=0x20339d0, t=0x2039090) at /homes/jwienke/nao/RSB/src/rsb/transport/spread/ReceiverTask.cpp:93
#2  0x00007f3948b31ad0 in boost::_mfi::mf1<void, rsb::spread::ReceiverTask, rsb::util::Task<void>*>::operator() (this=0x20390a0, p=0x20339d0, a1=0x2039090) at /usr/include/boost/bind/mem_fn_template.hpp:162
#3  0x00007f3948b31878 in boost::_bi::list2<boost::_bi::value<rsb::spread::ReceiverTask*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, rsb::spread::ReceiverTask, rsb::util::Task<void>*>, boost::_bi::list1<rsb::util::Task<void>*&> > (
    this=0x20390b0, f=..., a=...) at /usr/include/boost/bind/bind.hpp:306
#4  0x00007f3948b31768 in boost::_bi::bind_t<void, boost::_mfi::mf1<void, rsb::spread::ReceiverTask, rsb::util::Task<void>*>, boost::_bi::list2<boost::_bi::value<rsb::spread::ReceiverTask*>, boost::arg<1> > >::operator()<rsb::util::Task<void>*> (this=0x20390a0, a1=@0x7f3946b8fb20) at /usr/include/boost/bind/bind_template.hpp:32
#5  0x00007f3948b316a3 in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, rsb::spread::ReceiverTask, rsb::util::Task<void>*>, boost::_bi::list2<boost::_bi::value<rsb::spread::ReceiverTask*>, boost::arg<1> > >, void, rsb::util::Task<void>*>::invoke (function_obj_ptr=..., a0=0x2039090) at /usr/include/boost/function/function_template.hpp:153
#6  0x0000000000466b88 in boost::function1<void, rsb::util::Task<void>*>::operator() (this=0x2039098, a0=0x2039090) at /usr/include/boost/function/function_template.hpp:1013
#7  0x000000000046502f in rsb::util::Task<void>::run (this=0x2039090) at /homes/jwienke/nao/RSB/test/../src/rsb/util/Task.h:75
#8  0x000000000046af05 in boost::_mfi::mf0<void, rsb::util::Task<void> >::operator() (this=0x2039818, p=0x2039090) at /usr/include/boost/bind/mem_fn_template.hpp:49
#9  0x000000000046ae74 in boost::_bi::list1<boost::_bi::value<rsb::util::Task<void>*> >::operator()<boost::_mfi::mf0<void, rsb::util::Task<void> >, boost::_bi::list0> (this=0x2039828, f=..., a=...) at /usr/include/boost/bind/bind.hpp:246
#10 0x000000000046ae21 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, rsb::util::Task<void> >, boost::_bi::list1<boost::_bi::value<rsb::util::Task<void>*> > >::operator() (this=0x2039818) at /usr/include/boost/bind/bind_template.hpp:20
#11 0x00000000004699c2 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, rsb::util::Task<void> >, boost::_bi::list1<boost::_bi::value<rsb::util::Task<void>*> > > >::run (this=0x2039710)
    at /usr/include/boost/thread/detail/thread.hpp:56
#12 0x00007f394883ab70 in thread_proxy (param=<value optimized out>) at libs/thread/src/pthread/thread.cpp:130
#13 0x00007f39481139ca in start_thread (arg=<value optimized out>) at pthread_create.c:300
#14 0x00007f39476c270d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#15 0x0000000000000000 in ?? ()

Associated revisions

Revision 53632c8c
Added by J. Wienke over 13 years ago

Eventhough the symptoms were different after the Task changes in RSC, a similar bug like in #140 existed in the current code. The handler of the informer task was called from the port after the task was destructed. Now properly wait on all events from the informer task in a separate waiter object and only shutdown if we are sure that no more events are sent.

fixes #140

History

#1 Updated by J. Wienke over 13 years ago

  • Status changed from New to Resolved
  • Assignee changed from S. Wrede to J. Wienke

#2 Updated by J. Wienke over 13 years ago

  • % Done changed from 0 to 100

Also available in: Atom PDF