Boost logo

Boost :

From: carlos pizano (carlospizano_at_[hidden])
Date: 2003-09-20 19:36:11


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.

BTW, for testing and bug catching Robbins advocates
SetUnhandledExceptionFilter(). I hope that execution_monitor could be
used beyond (unit) testing.

Regards,

CPU.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk