RFR: 8263322: Deadlock when calling Application.launch in the FXThread after Platform.startup

Florian Kirmaier fkirmaier at openjdk.java.net
Wed Mar 10 15:53:10 UTC 2021


On Wed, 10 Mar 2021 13:14:15 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:

>> Fixing deadlock when calling Application.launch in the FXThread after Platform.startup
>
> tests/system/src/test/java/test/javafx/scene/InitializeJavaFXTest.java line 24:
> 
>> 22:     }
>> 23: 
>> 24:     public static void initializeApplication() throws Exception {
> 
> This method is unused, along with the `InitializeApp` class. Did you plan to use it?

It's useful to compare it with the behavior of the two methods to start JavaFX.
If it would be my codebase, I would keep it, so if someone investigates it later, it's easier to investigate for differences. But I can also delete it, what would you prefer?

> modules/javafx.graphics/src/main/java/com/sun/javafx/application/LauncherImpl.java line 174:
> 
>> 172:             final String[] args) {
>> 173: 
>> 174:         if (com.sun.glass.ui.Application.isEventThread() || launchCalled.getAndSet(true)) {
> 
> Can you do this as two separate `if` checks, with the `isEventThread` check first? The error message for this case should be something like "Application launch must not be called on the JavaFX Application Thread".

done

> tests/system/src/test/java/test/javafx/scene/InitializeJavaFXTest.java line 1:
> 
>> 1: package test.javafx.scene;
> 
> 1. Missing Copyright header block
> 2. Other platform startup tests are in `test.com.sun.javafx.application`; can you move this test there as well?

done

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

PR: https://git.openjdk.java.net/jfx/pull/421


More information about the openjfx-dev mailing list