[Rock-dev] Component does not read input port even though the previous is writing on its output port.

Sylvain Joyeux bir.sylvain at gmail.com
Tue Jan 9 13:32:35 CET 2018


Hi Diego.

This error message is "harmless". I costs you on the runtime side, but
both Syskit and orocos.rb will fallback to a CORBA transport when it
happens. You're going to get one per connection attempt (which is
probably why it is repeated).

Generally speaking, readNewest should be considered an anti-pattern.
Connect with a data connection if you want to always read the newest.

If you are on a remote system, the suggestion from Steffen makes
sense. Since you fallback to CORBA, you can hit the (in)famous CORBA
dispatcher problem. I've started pushing patches to RTT to finally fix
this, but I don't have time to follow-up on it right now. If you have
someone willing in your team (wink wink nudge nudge ...).

Generally speaking, as others have suggested, seeing OldData is normal
since the guarantee from RTT is that updateHook is called *at least*
after a port update (can be called once for multiple updates because
of scheduling, and might be called more than once).

Sylvain


On Mon, Dec 4, 2017 at 1:45 PM, Diego Cesar <diego.b.cesar at gmail.com> wrote:
> Hello guys,
>
> Recently I had a problem on the component `auv_control:PIDController` going
> to `POSE TIMEOUT` state.
>
> The point, however, is that looking to the logs, the pose feedback component
> is writing samples on its output port. So the `readNewest` on this line is
> not returning "RTT::NewData".
>
> Additionally I found this message on
> "orocos.auv_control_aligned_vel2body_effort-XXX.txt", related to "mqueue"
> that may be related to this issue:
>
>
>> 140.289 [ ERROR  ][MQSendRecv] FAILED opening
>> '/auv_control_aligned_vel2body_effort.pose_samples.0x7f627c0051b0 at 400' with
>> message size 516, buffer size 10 for reading :
>> 140.289 [ ERROR  ][MQSendRecv] Insufficient space for the creation of a
>> new message queue.  This probably occurred because the queues_max limit was
>> encountered; see mq_overview(7).
>> 140.290 [ ERROR  ][CDataFlowInterface_i::buildChannelOutput] Failed to
>> create MQueue Channel element: Could not open message queue: mq_open
>> returned -1.
>> 140.290 [ ERROR  ][CDataFlowInterface_i::buildChannelOutput] The type
>> transporter for type /base/samples/RigidBodyState failed to create an
>> out-of-band endpoint for port pose_samples
>> 141.308 [ Debug  ][CDataFlowInterface_i::createConnection]
>
>
> This message is printed repetitively until the component breaks.
>
> I'd like to ask if any of you have already had this problem or if the
> "mqueue" message can somehow be related to it. If not, which would be the
> reasons that could lead to this symptom.
>
> Best Regards,
>
> Diego Cesar
>
> _______________________________________________
> Rock-dev mailing list
> Rock-dev at dfki.de
> http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev
>


More information about the Rock-dev mailing list