------- Comment #13 from jason at gcc dot gnu dot org 2006-08-01 21:08 ------- Created an attachment (id=11988) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11988&action=view) NPTL patch for sticky cancellation
Revised, tested patch with testcase. So, there are 3 patches here, which are fairly independent of each other: 1) catch (abi::__forced_unwind &) -- this patch seems uncontroversial and I think should go in very soon. 2) prevent catch (...) from catching forced unwind -- this change is highly controversial. The last time I brought up this topic I tried to convince C++ folks to subscribe to this perspective and failed. 3) "sticky cancel" (if cancellation exception is discarded, raise a new one at the next cancellation point) -- Ulrich was strongly opposed to discarding the cancellation exception in the past, but might be more open now that I have an implementation. As previously mentioned, #3 is the only way to deal with cancellation within throw(). Cancellation will ignore other exception specifications. #2 or #1 are enough to deal with the catch (...) problem. #3 alone is not; it can lead to an infinite loop of catch and discard in an outer loop that tries to recover from exceptions. #1 seems like a good thing regardless of #2 or #3. -- jason at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #11979|0 |1 is obsolete| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28145