[ros-users] Debuggin ROS_COMM deserializer

Claudio Carbone cla_carbone at tiscali.it
Tue Nov 27 16:53:07 UTC 2012


Hello all.

I built ros from source on an ARM armv5tejl platform.
Compilation, linking and running nodes all work, but messages have problems:

|[ERROR]  [1353939756.715474051]:  Exception  thrownwhen  deserializing message of length[164]  from  [/add_two_ints_server]: Buffer Overrun

|

Now having checked /message_deserializer.cpp/ I know where this error 
originates, but I don't have any means to debug this.
The problem happens when any node is run on the arm platform: meaning 
that if I run the core on my laptop together with a listener, and the 
talker on the arm, the /rosout reports this error, and the same if any 
of these three nodes is run on the arm.

If all nodes are run on x86 computers on the same network, everything is 
fine.

So I continued searching for a byte-buffer as the buffer mentioned in 
the serialization protocol is a message buffer and overrunning that 
would mean dropping messages, not the inability to deserialize.
So in topic_manager.cpp  line 638 finally a buffer appears whose size is 
parametrized on header_bytes.size.
Header_bytes is assigned as proto[n]
       if (proto.size() != 5 ||
           proto[1].getType() != XmlRpcValue::TypeBase64 ||
           proto[2].getType() != XmlRpcValue::TypeString ||
           proto[3].getType() != XmlRpcValue::TypeInt ||
           proto[4].getType() != XmlRpcValue::TypeInt)

in topic_manager.cpp

and
     if (proto.size() != 6 ||
         proto[1].getType() != XmlRpcValue::TypeString ||
         proto[2].getType() != XmlRpcValue::TypeInt ||
         proto[3].getType() != XmlRpcValue::TypeInt ||
         proto[4].getType() != XmlRpcValue::TypeInt ||
         proto[5].getType() != XmlRpcValue::TypeBase64)

in subscription.cpp

Following these I find XmlRpcValue.cpp and XmlRpcValue.h but I can't 
find any numeric values anywhere.
So I'm guessing these values are system-dependent and fetched externally.
But from where? How can I manually set the buffer length?

Thanks and regards
||

-- 

*Eng. Claudio Carbone
Embedded Systems Design*

P.IVA: 11688471009
tel: +393809017424
email: Send email
<mailto:cla_carbone at tiscali.it>My linkedin profile 
<http://it.linkedin.com/in/embeddedesign/en>

My Portfolio
My portfolio site <http://www.fusioncoredesign.it/>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osuosl.org/pipermail/ros-users/attachments/20121127/bc8ff979/attachment-0003.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 2321 bytes
Desc: not available
URL: <http://lists.osuosl.org/pipermail/ros-users/attachments/20121127/bc8ff979/attachment-0003.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/png
Size: 11839 bytes
Desc: not available
URL: <http://lists.osuosl.org/pipermail/ros-users/attachments/20121127/bc8ff979/attachment-0003.png>


More information about the ros-users mailing list