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.

> That led me to wonder why, on Windows, we build libgtest and rebuild libjvm 
> with exceptions enabled, by using -EHsc instead of no -EH option as done for 
> the non-gtest libjvm?
> 
> That decision seems pretty old, like maybe from the initial introduction of 
> gtest. I haven't tracked down why, or whether the reasons are still valid. I 
> think it would be better to change that, assuming that's possible.

Your assumption is correct. This is from the initial JDK-8148244. I don't know 
if there is any rationale, or if this was just added by following gtest 
documentation.

I guess it can be removed. I'm starting a test run of hs-tier1 without it right 
now, but I'm not sure if that is enough to provoke any potential problems.

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

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

Reply via email to