On Mon, 28 Jun 2021 12:27:34 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
>> This is a fix for the assertion error message that is printed to the console >> on macOS 10.15 or later when an application calls `Platform.exit` while a >> `Stage` is showing. >> >> The root cause is a latent bug in the JavaFX glass code that was revealed by >> an apparent change of behavior in macOS. A few of the object deallocation >> methods, which are called by the Objective C auto-release mechanism, use the >> standard `GET_MAIN_JENV` macro to get the JNI environment. The macro will >> print an assertion warning if Java has been detached. I instrumented the >> code and can see that `GlassViewDelegate::dealloc` is now called after the >> `GlassApplication` main loop has detached Java. Since we don't control when >> the dealloc method is called, it is not correct to do the assertion check in >> those cases. Some of the dealloc methods already skip this assertion check >> by grabbing the jEnv pointer directly, so we need to fix the others. I added >> a new variant of the macro called `GET_MAIN_JENV_NOWARN` with a comment >> indicating that is suitable for use by the dealloc methods. >> >> In addition to verifying that the test program attached to JBS now exits >> cleanly with no assertion failure message, I added an automated system test >> that fails on macOS before the fix and passes after the fix. On other >> platforms it passes already. > > Kevin Rushforth has updated the pull request incrementally with one > additional commit since the last revision: > > Fix value of ERROR_TIMEOUT constant per code review Marked as reviewed by aghaisas (Reviewer). The fix is fine. I tested on macOS 10.15.7. ------------- PR: https://git.openjdk.java.net/jfx/pull/540