Sorry for late reply; been under the weather lately, healthwise, so
this is my first 'on-line' experience in a while ;-)

As far as the brain is operational again... I'd say the quickest way
to fix this is to wrap the __try/__except chunk in a compiler-specific
preproc check a la:

#if defined(_MSC_VER)
__try
...
__except
...
#endif

No use doing #else branches for that one, as the alternatives are:

- 'try/catch' without the underscores is (a) C++ and (b) does not
catch hardware exceptions like __try/__except/... does (except, yes,
here we have those nutters again, in MSVC compilers before MSVC2005;
see also
http://www.thunderguy.com/semicolon/2002/08/15/visual-c-exception-handling/
), plus:

- I don't think mingw et al have something equivalent to offer anyhow,
unless they've come up with some harebrained signal/sigaction scheme
of their own instead. Allow me to cringe if they have.

- The choice to 'roll your own' I would strongly advise to stay the
hell away from; for a hint of what it might take for starters, see
  http://www.microsoft.com/msj/0197/Exception/Exception.aspx


So unless someone can teach me the error of my current ways regarding
SEH and gcc on Win32/64, I'd say that __try/__except encased section
should be available for MSVC compilers only (or more precise:
compilers which support Win32/64 hardware exception handling through
__try/__except compiler support).

Anybody else should not be executing the enclosed code section.


The excuse here is that it's only one of multiple parts collecting
randomness input for the OpenSSL SPRNG; mingw/etc. builds may be
thought to be 'slightly less desirable' this way, but the counterpoint
is a real (if minor?) risk of hardware failures resulting in
unpredictable application termination for those compiler environments
on Win32/Win64.

After all, the whole point, IIRC, of adding those __try/__except lines
in there was it being the only viable run-time fix for reported
run-time instability of the system calls in the enclosed section, so
if we remove them, it's open season for program abort again.


So far, my thoughts on the matter.

Steve, what do you think?


I take it you'd like an updated patch/diff file to go with this, right?

Anyhow, I'll investigate the matter in more depth when I'm feeling
capable again in a couple of days. Right now, I've still got too many
fluid leaks from too many holes. And since the small print on this
here pillbox says the intake of brain coolant is empathetically
prohibited, I'd really like to run my think tank in low gear for a
little while, if you'll allow me. ;-)




On Sun, Sep 20, 2009 at 2:39 PM, Stephen Henson via RT <r...@openssl.org> wrote:
>> [steve - Fri Jul 24 16:01:44 2009]:
>>
>> Patch now applied. Thanks for the report.
>>
>
> Update. This doesn't work on non-VC++ Windows builds e.g. mingw. The
> __try+__except stuff chokes them. For now reverting to old code for
> those cases. Any suggestions for an equivalent fix on those?
>
> Steve.
> --
> Dr Stephen N. Henson. OpenSSL project core developer.
> Commercial tech support now available see: http://www.openssl.org
>
>



-- 
Met vriendelijke groeten / Best regards,

Ger Hobbelt

--------------------------------------------------
web:    http://www.hobbelt.com/
        http://www.hebbut.net/
mail:   g...@hobbelt.com
mobile: +31-6-11 120 978
--------------------------------------------------
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to