Here is the setup:
MyCommon.so
- this lib contains some basic classes, one of which (baseTRx) has a boost::thread.
- this lib includes boost_system and boost_thread using the --whole-archive flag (linux) and equivalent for darwin and win
- this was done to minimize the number of files the customer would receive, among other reasons...
MyTRx.so
- this lib contains a class derived from baseTRx (myTRx).
- links to MyCommon
MyEXE
- this contains main.
- links to MyCommon
- loads MyTRx at run time.
- creates an instance od myTRx.
- signals MyEXE (via interupt()) when its time to cleanly shut down
Using GCC 4.2 w/ -fvisibility=hidden, thread_interrupted isn't being caught in myTRx since it's being thrown from a different so w/ hidden visibility.
The fix for this is:
#define BOOST_THREAD_DECL __attribute__ ((visibility("default")))
when gcc has visibility.
Am I correct? If so, I'll write the defect and work on the patch....
If I'm wrong, what am I doing wrong: what should I do different?
--
Scott Bailey