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

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

Commit messages:
 - 8340849:macos] Crash when creating a child window of a JavaFX window after 
Platform::exit

Changes: https://git.openjdk.org/jfx/pull/1614/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1614&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8340849
  Stats: 24 lines in 3 files changed: 19 ins; 1 del; 4 mod
  Patch: https://git.openjdk.org/jfx/pull/1614.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1614/head:pull/1614

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

Reply via email to