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
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.
[Switching to Thread 0x7fffd9ca1710 (LWP 31603)]
0x00007fffdca76e9f in
ros_integration::RosPubChannelElement<std_msgs::Float64_<std::allocator<void>
> >::publish (this=0x7fffe80520a0)
at /home/stefan/rosext/orocos_toolchain_ros/rtt_ros_integration/src/ros_msg_transporter.hpp:100
100 if( input->read(sample) == NewData )
(gdb) bt
#0 0x00007fffdca76e9f in
ros_integration::RosPubChannelElement<std_msgs::Float64_<std::allocator<void>
> >::publish (this=0x7fffe80520a0)
at /home/stefan/rosext/orocos_toolchain_ros/rtt_ros_integration/src/ros_msg_transporter.hpp:100
#1 0x00007fffe6dcca67 in ros_integration::RosPublishActivity::loop
(this=0x7fffe8052be0)
at /home/stefan/rosext/orocos_toolchain_ros/rtt_ros_integration/src/ros_publish_activity.hpp:39
#2 0x00007ffff72e98ab in RTT::os::thread_function (t=<value optimized out>)
at /home/stefan/rosext/orocos_toolchain_ros/rtt/build/orocos-toolchain-rtt/rtt/os/Thread.cpp:182
#3 0x00007ffff66869ca in start_thread (arg=<value optimized out>) at
pthread_create.c:300
#4 0x00007ffff4b2d6fd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5 0x0000000000000000 in ?? ()
I don't have a hard-RT system available for testing right now, but I'd
expect "best effort" publishing together with a warning when using the
ROS transport and not completely switching off the Outport. Is this
known/intended behavior?
regards,
Stefan