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

Reply via email to