[ros-users] SegFault in TransformBroadcaster

David Gossow dgossow at uni-koblenz.de
Thu Jan 13 15:19:03 UTC 2011


On 01/13/2011 07:08 AM, Brian Gerkey wrote:
> On Wed, Jan 12, 2011 at 8:44 AM, David Gossow<dgossow at uni-koblenz.de>  wrote:
>> Problem solved. I've called add_library instead of rosbuild_add_library
>> for the class where the error h
>> happened. This lead to the compiler flag -DBT_USE_DOUBLE_PRECISION being
>> missing in that part of the code, which resulted in my code and all
>> inline functions assuming float data and the externally linked code
>> assuming double data. The std::strings that caused the segfault were
>> thus overwritten by the oversized double data.
>>
>> Seems a bit dangerous to have this flag set via the manifest.xml export
>> and not checking it somehow, as everything will compile without warning
>> and then produce seemingly random errors.
> Glad to hear that you figured it out.  Any suggestion on where else
> those compile flags should live?
>
> 	brian.
Hi Brian,

it would be nice to not having to define this as a compiler flag. 
Changing that would need a bigger change to Bullet itself as it seems as 
there's no central header where you could define that.

What we could ask the Bullet developers for:
* Require that either BT_USE_DOUBLE_PRECISION or BT_USE_SINGLE_PRECISION 
be defined in all Bullet headers that make use of it.
* Have a central header where this constant is defined

What we could do on ROS side:
* Check in the packages directly depending on Bullet (e.g. tf) that 
BT_USE_DOUBLE_PRECISION is set. That's kind of a hack, however.
* Patch the Bullet headers so BT_USE_DOUBLE_PRECISION is forced.

All not excessively nice solutions, however that's the best I can come 
up with.

Cheers,
David



More information about the ros-users mailing list