------- 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