[Rock-dev] [rock] #214: Component runs into assert in RTT::internal::TsPool<>::size
rock
noreply at opendfki.de
Fri Nov 9 15:54:19 CET 2012
#214: Component runs into assert in RTT::internal::TsPool<>::size
---------------------+-----------------------------------
Reporter: thro02 | Owner: rock-dev-mailing-list
Type: defect | Status: new
Priority: blocker | Milestone:
Component: base | Keywords:
---------------------+-----------------------------------
After an update to the lastest (branch master) roby et.al. I now run into
an assert in: rtt/internal/TsPool.hpp +213 (when using the component
together with the supervision):
{{{
/**
* Return the number of elements that are available to be
allocated.
* This function is not thread-safe and should not be used
when concurrent
* allocate()/deallocate() functions are running.
* @return the number of elements left to allocate.
*/
unsigned int size()
{
unsigned int ret = 0;
volatile Item* oldval;
oldval = &head;
while ( oldval->next.ptr.index != (unsigned short) -1) {
++ret;
oldval = &pool[oldval->next.ptr.index];
assert(ret <= pool_capacity); // abort on corruption
due to concurrency.
}
return ret;
}
}}}
The corresponding backtrace:
{{{
#0 0x00007f93afed0a75 in raise () from /lib/libc.so.6
#1 0x00007f93afed45c0 in abort () from /lib/libc.so.6
#2 0x00007f93afec9941 in __assert_fail () from /lib/libc.so.6
#3 0x00007f93b1791711 in
RTT::internal::TsPool<monster::ProcessList>::size (this=0x1567bb0) at
/opt/software/install/include/rtt/types/../internal/../base/../internal/TsPool.hpp:213
#4 0x00007f93b178d781 in ~TsPool (this=0x1567bb0, __in_chrg=<value
optimized out>) at
/opt/software/install/include/rtt/types/../internal/../base/../internal/TsPool.hpp:125
#5 0x00007f93b179c361 in ~BufferLockFree (this=0x1567b90,
__in_chrg=<value optimized out>) at
/opt/software/install/include/rtt/types/../internal/../base/BufferLockFree.hpp:94
#6 0x00007f93b1791ac4 in
boost::checked_delete<RTT::base::BufferInterface<monster::ProcessList> >
(x=0x1567b90) at /opt/boost/include/boost/checked_delete.hpp:34
#7 0x00007f93b179b242 in
boost::detail::sp_counted_impl_p<RTT::base::BufferInterface<monster::ProcessList>
>::dispose (this=0x15db200) at
/opt/boost/include/boost/smart_ptr/detail/sp_counted_impl.hpp:78
#8 0x000000000042a6d6 in boost::detail::sp_counted_base::release
(this=0x15db200) at
/opt/boost/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:145
#9 0x000000000042a74f in ~shared_count (this=0x1567cb8, __in_chrg=<value
optimized out>) at
/opt/boost/include/boost/smart_ptr/detail/shared_count.hpp:217
#10 0x00007f93b178b7b0 in ~shared_ptr (this=0x1567cb0, __in_chrg=<value
optimized out>) at /opt/boost/include/boost/smart_ptr/shared_ptr.hpp:169
#11 0x00007f93b179b392 in ~ChannelBufferElement (this=0x1567c60,
__in_chrg=<value optimized out>) at
/opt/software/install/include/rtt/types/../internal/ChannelBufferElement.hpp:65
#12 0x00007f93b64008b4 in RTT::base::ChannelElementBase::disconnect(bool)
() from /opt/software/install/lib/liborocos-rtt-gnulinux.so.2.5
#13 0x00007f93b179e483 in
RTT::internal::ConnInputEndpoint<monster::ProcessList>::disconnect
(this=0x1567cd0, forward=true) at
/opt/software/install/include/rtt/types/../internal/ConnInputEndPoint.hpp:81
#14 0x00007f93b6413a1b in
RTT::internal::ConnectionManager::removeConnection(RTT::internal::ConnID*)
() from /opt/software/install/lib/liborocos-rtt-gnulinux.so.2.5
#15 0x00007f93b6413c18 in
RTT::internal::ConnectionManager::disconnect(RTT::base::PortInterface*) ()
from /opt/software/install/lib/liborocos-rtt-gnulinux.so.2.5
#16 0x00007f93b1013e21 in
RTT::corba::CDataFlowInterface_i::removeConnection(char const*,
RTT::corba::_objref_CDataFlowInterface*, char const*) () from
/opt/software/install/lib/liborocos-rtt-corba-gnulinux.so.2.5
#17 0x00007f93b104bbc6 in
_0RL_lcfn_8fd6acea43f2a3c6_e1000000(omniCallDescriptor*, omniServant*) ()
from /opt/software/install/lib/liborocos-rtt-corba-gnulinux.so.2.5
#18 0x00007f93b0cd2f79 in omniCallHandle::upcall(omniServant*,
omniCallDescriptor&) () from /usr/lib/libomniORB4.so.1
#19 0x00007f93b1053f49 in
RTT::corba::_impl_CDataFlowInterface::_dispatch(omniCallHandle&) () from
/opt/software/install/lib/liborocos-rtt-corba-gnulinux.so.2.5
#20 0x00007f93b1043ab1 in
RTT::corba::_impl_CService::_dispatch(omniCallHandle&) () from
/opt/software/install/lib/liborocos-rtt-corba-gnulinux.so.2.5
#21 0x00007f93b0cbf9bd in omni::omniOrbPOA::dispatch(omniCallHandle&,
omniLocalIdentity*) () from /usr/lib/libomniORB4.so.1
#22 0x00007f93b0ca5068 in omniLocalIdentity::dispatch(omniCallHandle&) ()
from /usr/lib/libomniORB4.so.1
#23 0x00007f93b0cf18df in omni::GIOP_S::handleRequest() () from
/usr/lib/libomniORB4.so.1
#24 0x00007f93b0cf2088 in omni::GIOP_S::dispatcher() () from
/usr/lib/libomniORB4.so.1
#25 0x00007f93b0ceea4e in omni::giopWorker::real_execute() () from
/usr/lib/libomniORB4.so.1
#26 0x00007f93b0cef08f in omni::giopWorker::execute() () from
/usr/lib/libomniORB4.so.1
#27 0x00007f93b0c9b5f7 in omniAsyncWorker::real_run() () from
/usr/lib/libomniORB4.so.1
#28 0x00007f93b0c9b8bf in omniAsyncWorker::run(void*) () from
/usr/lib/libomniORB4.so.1
#29 0x00007f93b09d424d in omni_thread_wrapper () from
/usr/lib/libomnithread.so.3
#30 0x00007f93b60c39ca in start_thread () from /lib/libpthread.so.0
#31 0x00007f93aff8616d in clone () from /lib/libc.so.6
#32 0x0000000000000000 in ?? ()
}}}
Before a number of log messages appear regarding connection policies:
Cannot compute the period information for the output port
Orocos[WARN]:
tProxy(Orocos::RobyPlugin::Monster::InterfaceModule:0x7f441df079a0){conf
=> [default], orocos_name => MONSTERINTERFACE}:processes_out
Orocos[WARN]: This is needed to compute the policy to connect to
Orocos[WARN]:
tProxy(Orocos::RobyPlugin::Logger::Logger:0x7f441dec07d0){conf =>
[default], orocos_name =>
MONSTERINTERFACE_Logger}:MONSTERINTERFACE.processes_out
Orocos[WARN]: The fallback policy {type => buffer, size => 25} will be
used
Any ideas/suggestions?
--
Ticket URL: <https://rock.opendfki.de/ticket/214>
rock <https://rock.opendfki.de>
rock: the robot construction kit
More information about the Rock-dev
mailing list