David Yon wrote:
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?
No, it's just a bunch of source.
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.
The .so will get unloaded after the executable, so the static regex instances might be the cause of the problem I suppose, but they really shouldn't be. If this does turn out to be the cause and you can put together a test case I'll look into it. John.