Not to beat the dead horse beyond any recognition :-), but I was thinking last night that the solution you posted also has the problem that it doesn't work (at least I don't understand how it does) if the exception is thrown from unmanaged code.
In other words a call stack of unmanaged (A) -> managed (B) -> unmanaged (C) where C throws the exception and A catches it will not work unless fs: [0] is involved (and not via the regular setjmp() mechanism). Anyway, I'll shut up now. :-) Cristian
