On Fri, 8 Aug 2025 06:30:16 GMT, Thomas Stuefe <stu...@openjdk.org> wrote:

> So, we run gtests on Windows with `--gtest_catch_exceptions=0` which disables 
> the inbuilt exception handler.
> 
> See issues
> 
> * https://bugs.openjdk.org/browse/JDK-8185734
> * https://bugs.openjdk.org/browse/JDK-8267138 (fixed an oversight in 8185734)
> 
> See more details in my [PR description for 
> 8185734](https://github.com/openjdk/jdk/pull/1757#issue-765285610), that's 
> why this all sounded so familiar.
> 
> The mechanism in place since 8267138 should be enough for my understanding. 
> @swesonga, can you find out why this is not sufficient in your case? Is this 
> option not passed on to your test?
> 
> > 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?
> 
> In the libjvm code itself, we don't use C++ exceptions, and we catch all 
> Windows SEH with `__try`/`__except`. We also don't want standard stack 
> unwinding with these signals. So no need for `/EHxx`. My assumption is that 
> the gtest framework itself uses C++ exceptions and therefore needs `/EHsc`. 
> The documentation is not super clear on some aspects of this 
> (https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model),
>  but it says that for standard C++ exceptions to work `/EHsc` is needed.
> 
> > I was concerned that this might effectively undo JDK-8185734, since the 
> > suggestion in JBS was to conditionalize some code on GTEST_HAS_SEH being 
> > true. But it looks like the actual change didn't do that.
> 
> In my PR for 8184734, I wrote:
> 
> " In JBS, @kimbarrett suggested to build gtests with GTEST_HAS_SEH switched 
> off to prevent gtest from using SEH. Unfortunately that won't work since the 
> use of death tests means we need SEH. If we switch GTEST_HAS_SEH off, the 
> death tests don't build. I also do not like this suggestion since this 
> configuration may have a higher chance of bitrotting upstream."
> 
> So it looks this was the first thing I tried back then, and it failed.

Thank you for this detailed background and explanation. Turns out we have 2 
separate gtest runs happening, one that matches the GitHub actions test you 
pointed out and another that doesn't have the `--gtest_catch_exceptions=0` 
flag. I was focused on the latter scenario but based on your explanation, the 
correct resolution is for us to not run gtests without that flag. I will close 
this pull request and update our test infrastructure to remove that scenario.

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

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

Reply via email to