
John Maddock wrote:
If that works OK, then I bet there's some lind of binary incompatibity between the lib variant that you're using and your program: try adding the regex source direct to your program's build process and see if that works, if it does I would suggest building the regex source into a static lib yourself using whatever compiler options you're using.
I'll probably try this first. I'm not doing anything special with compiler options---I'm using Kdevelop to build command-line tools and a daemon, and letting it choose the options. Before I go reverse-engineer the Jamfile, can you tell me anything specific that Boost.regex wants to see in terms of compiler options or pre-processer definitions?
However... I note that your program is calling exit explicity, there's just an outside chance that there's some kind of bug either in the regex lib initialisation/cleanup routines or in gcc-4.x. Or... maybe your program is accessing the regex lib during it's cleanup routines, and finding that regex has already destroyed it's globals? Those are just wildcard suggestions frankly.
I don't define an atexit handler. The only thought I have is that I do have a number of statically-declared regex objects which would be getting cleaned up by the compiler automatically calling destructors. Perhaps the compiler is getting it wrong by cleaning up the regex library before destructing my static regex objects? It's just odd that using a .so works just great but this all unravels with a .a.