Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-09-20 21:05:37

"carlos pizano" <carlospizano_at_[hidden]> writes:

> Hello Boosters. I am looking into the boost.test library for insights.
> In particular I like the boost::execution_monitor idea. However, I found
> that on Windows + VC execution_monitor implementation uses
> _set_se_translator() to translate native exceptions (SEHs) into C++
> exceptions, and I was fine with that for a while until I stumbled unto
> John Robbins book : "Debugging applications for Microsoft .NET and for
> Microsoft Windows" (Microsoft Press, 2003) chapter 13 specifically in
> pg. 524 he has section named "Don't Use _set_se_translator" where he
> goes to say that _set_se_translator:
> 1- Is not global, works only on a per thread basis
> 2- Does not work in release builds (!!)
> 3- Forces your code to use asynchronous exception handling (/EHa), which
> reduces performance and maybe increases code bloat.
> I don't really understand why #2 but #3 is the one I don't like. I guess
> my question is twofold: a) why is execution_monitor using
> _set_se_translator, and b) why can't we change it to a model that allows
> me to compile with sync exceptions (/EHs), that is, a model where we
> *carefully* mix SEH and C++ EH. I am willing to submit ideas for that
> scenario.

I don't know what execution_monitor is doing, but the
_set_se_translator technique described in doesn't require /EHa.
In fact, if the execution_monitor is using some other kind of SEH
catching where it tries to continue, I think it's a very bad idea
(hard for developers to debug and further results are unreliable
anyway because there's been a crash) and should be changed to use the
one outlined above.

Dave Abrahams
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at