Lance, The system is RHEL 6.1 X86_64, using glibc 2.12 that comes with the system. I was going to give GCC 4.7 a try, but unfortunately, they closed a very arcance template dependent name resolution loophole that my 3rd-party legacy code was exploiting and it will be a bear to try to fix it. Threads are being cancelled using libpthread pthread_cancel, synrchonously I believe - will have to verify that. So perhaps going to a later version of glibc might be worth a try? I see 2.15 is the latest. If so, do you know what special build options I must chose to make the exception handling work correctly? Thanks very much for your time. Mike ________________________________________ From: Ian Lance Taylor [iant@xxxxxxxxxx] Sent: Monday, May 07, 2012 6:40 PM To: Mike Dalpee Cc: gcc-help@xxxxxxxxxxx Subject: Re: GCC 4.6.2 C++ thread cancellation issue Mike Dalpee <mikedalpee@xxxxxxxxxxxx> writes: > I am trying to port some legacy code to properly work in the face of > thread cancellation. What thread library are you using? E.g., are you using glibc on a GNU/Linux system, or something else? How are you cancelling the thread? Via pthread_cancel or something else? Are you using an ARM system or something else? > Based on information I have gleaned from searching the net, it appears > that any catch(...) handlers that try to finalize the exception must > be augmented to first catch abi::_forced_unwind and simply rethrow the > exception for cancellation to work properly. That seems plausible, assuming you use a simple "throw;" to rethrow the exception. > I am running into a problem where the rethrow of abi::_forced_unwind > is being treated as an unhandled exception by the runtime, thereby > causing an abort to occur. So, my questions are: > > 1) Should what I am doing work? Ideally, yes. > 2) Is there a particular way GCC must be built for the rethrow to work? No. > 3) Is there a particular combination of GCC/GLIBC versions required > for the rethrow to work? The GCC version shouldn't matter. The way that GLIBC was built does matter. Ian