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