[ros-users] rtt_orocs_toolchain: invalidated write ports when running high frequency task context

Peter Soetens peter at thesourceworks.com
Fri Oct 15 18:58:59 UTC 2010


On Fri, Oct 15, 2010 at 6:47 PM, Stefan Kohlbrecher
<stefan.kohlbrecher at googlemail.com> wrote:
> Hi,
>
> I played around some more with the rtt_ros_integration_example. To
> check the behavior on my non-hard RT system with high execution speeds
> I set the periodic activity to a 10 kHz update rate. Barring that
> doing that is not making much sense, I basically nondeterministically
> get the following errors for the outports after some (short) time:
>
>  [ ERROR  ][Logger] A channel of port float_out has been invalidated
> during write(), it will be removed

This message means the Orocos ros transport decided to terminate the
connection. The current code does this when it had to drop a sample.
That's a painful default :-/ I believe Ruben will change that to just drop
the sample and do a best effort as you suggest.

>
>
> Complete Info with gdb Backtrace:
>
> Deployer [S]> 5.502 [ ERROR  ][Logger] A channel of port float_out has
> been invalidated during write(), it will be removed
>
> Program received signal SIGSEGV, Segmentation fault.

The segfault comes from a race in the transport code which is not
properly prepared
for the object destruction. I believe we can fix this quickly too by
stopping the
publish activity in the destructor of the ros transport channel.

Thanks for reporting, we obviously had not yet tested it in this way.

Peter



More information about the ros-users mailing list