ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

After a trip into the basement where they keep the Ark of the Covenant, I found an email that I sent to Jeremy Leibs and Ken Conley looking for advice on this topic in February 2012:

John and I spent quite some time yesterday tracking down a segfault that was only happening when using a .deb built by our new catkin-based debbuilder, and could not be reproduced by compiling the crashing library from source. Turns out that we could reproduce it by building the library with -Wl,-Bsymbolic-functions on the link line. And that's what pbuilder is doing in the new debbuilder.

That whole sequence rang a distant bell in my mind, and I then found this gem of a ticket: https://code.ros.org/trac/ros/ticket/2977 So we've simply re-encountered the problem.

The space of solutions is the same, with the "right" answer likely being to force everybody to use -Wl,-Bsymbolic-functions in their own development, and fixing underlying bugs. But at this point, I don't have time before the Fuerte release to work through the regressions that would surely result.

So: do you recall how you "cleared out LDFLAGS in the current deb-building system"? I'd like to do the same in the new system.

We'll do our best to address this properly in the next release cycle, starting early.

What followed in the email thread amounted to, "yeah, it's best to add LDFLAGS= somewhere in the pipeline". The description of the resulting catkin issue is simply a copy and paste of Ken's response along those lines.

I do not recall what the actual problem was. After reading through this ancient history, my guess is:

  • Somewhere in the normal deb-building pipeline (at least when using pbuilder), somebody adds -Wl,-Bsymbolic-functions to LDFLAGS.
  • That addition is probably done for some good reason and it's probably not supposed to cause harm.
  • Unfortunately it can sometimes cause harm, probably by exposing some underlying bug or flawed assumption in the code that is being built into a deb.
  • We papered over the bug/flaw by wiping out LDFLAGS.
  • We intended to address the underlying bug/flaw but probably never made it happen.

Unfortunately, from the description that I gave to Ken and Jeremy, it seems like whatever problem arises when using -Wl,-Bsymbolic-functions may present itself as a tricky segfault. So my guess is that it's not safe to remove the LDFLAGS override. Or at least it would be hard to prove that it's safe.