Integrated: 8340849: [macos] Crash when creating a child window of a JavaFX window after Platform::exit

Prasanta Sadhukhan psadhukhan at openjdk.org
Wed Oct 30 13:47:15 UTC 2024


On Mon, 28 Oct 2024 15:01:20 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

> When AWT toolkit is started first for it to own the "NSApplication" and then FX toolkit is started and shutdown by calling `Platform.exit` and then Swing Dialog is tried to be created, then it is seen that the application crashes as the AWT dialog tries to create the underlying Window as a child window of the FX window (as can be seen [here](https://github.com/openjdk/jdk/blob/9f6211bcf1b46e4bfba2d128d9eb8457bc0cde51/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java#L738-L743) )
> Since the underlying window handle is already invalid, it crashes.
> 
> The fix is made to register shutdown hook when FX toolkit is shutting down so as to notify JLightweightFrame about the invalid window handle when FX toolkit is shutdown and SwingNode disposer is called.
> 
> The regression test is modified to override tearDownOnce as the test method shuts down the JavaFX runtime using `Platform.exit`, then the `teardownOnce `method in the superclass  calls `Util.shutdown`, which times out waiting for a runnable to run, which it never will since the toolkit is already shutdown

This pull request has now been integrated.

Changeset: 501f761c
Author:    Prasanta Sadhukhan <psadhukhan at openjdk.org>
URL:       https://git.openjdk.org/jfx/commit/501f761c388642c73ce210fb199806eeeda73e54
Stats:     24 lines in 3 files changed: 19 ins; 1 del; 4 mod

8340849: [macos] Crash when creating a child window of a JavaFX window after Platform::exit
8340442: Enable SwingNodePlatformExitCrashTest after JDK-8340849 is fixed

Reviewed-by: kcr, lkostyra

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

PR: https://git.openjdk.org/jfx/pull/1614


More information about the openjfx-dev mailing list