On Wed, 6 Aug 2025 18:05:24 GMT, Saint Wesonga <d...@openjdk.org> wrote:

> https://github.com/openjdk/jdk/commit/0054bbed7fce5b8566655d6910b09b10c952e609
>  (from https://bugs.openjdk.org/browse/JDK-8343756) caused the gtest death 
> tests to fail on Windows with the error message "Caught 
> std::exception-derived exception escaping the death test statement. Exception 
> message: unknown file: error: SEH exception with code 0xc0000005 thrown in 
> the test body." The error message is from the catch block in 
> https://github.com/google/googletest/blob/v1.14.0/googletest/include/gtest/internal/gtest-death-test-internal.h#L198-L212
> 
> In the failing death tests, the gtests start another process and expect the 
> child process to be terminated by JVM error handling code. However, the 
> structured exception handling code in the googletest code ends up getting 
> executed instead. The death tests expect execution to continue after the 
> instruction that triggered the exception by writing to the poissoned page. 
> This change proposes build Windows gtests without structured exception 
> handling to avoid changing the flow of exceptions in OpenJDK test code. The 
> effect of this change is to stop using the  [SEH path in the 
> HandleSehExceptionsInMethodIfSupported 
> method](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2603)
>  and [directly start the 
> test](https://github.com/google/googletest/blob/v1.14.0/googletest/src/gtest.cc#L2612).
> 
> All the Windows gtests now pass with this change.

Well that did not work:

 warning C4530: C++ exception handler used, but unwind semantics are not 
enabled. Specify /EHsc
 ```
when compiling `googletest-1.14.0/googlemock/src/gmock-spec-builders.cc`.

I'm not sure really of the effect of including, or not including, `/EHsc` when 
building gtest. An alternative is to disable C4530; I can try that as well.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/26661#issuecomment-3173825277

Reply via email to