RFR: 8231558: [macos] Platform.exit causes assertion error on macOS 10.15 or later [v2]
Kevin Rushforth
kcr at openjdk.java.net
Mon Jun 28 12:27:34 UTC 2021
> 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
-------------
Changes:
- all: https://git.openjdk.java.net/jfx/pull/540/files
- new: https://git.openjdk.java.net/jfx/pull/540/files/5abf1b66..68abfaf5
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jfx&pr=540&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=540&range=00-01
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jfx/pull/540.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/540/head:pull/540
PR: https://git.openjdk.java.net/jfx/pull/540
More information about the openjfx-dev
mailing list