RFR: 8335630: Crash if Platform::exit called with fullScreen Stage on macOS 14
Kevin Rushforth
kcr at openjdk.org
Mon Jul 15 23:33:55 UTC 2024
On Mon, 15 Jul 2024 23:03:10 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> This is unrelated to the current bug, since all accesses are happening on the FX app thread, so I'd like to file a follow-up to look into this.
>>
>> To answer the question, there might be a potential problem with other threads not seeing that the `Application.application` field has been set to null.
>>
>> Other threads do not access the glass Application directly. Most methods requires the app to be on the application thread, and will correctly detect and fail whether they see the old or new value of `Application.application`, so those operations will be fine.
>>
>> One scenario that should be examined is `Platform.runLater`, which could call into glass and see the old value of application. There are related fields in `Tooklit` (e.g., the `fxUserThread` variable) that ought to be examined at the same time.
>
>> since all accesses are happening on the FX app thread
>
> Not quite right: the following threads access the field, apart from JavaFX Application Thread:
>
>
> thread=JavaFX-Launcher
> thread=Thread-2
> thread=PulseTimer-CVDisplayLink thread
> thread=QuantumRenderer-0
>
>
> The output above logs thread names that access `Application.application` field, running the reproducer attached to both tickets.
To clarify, I'm talking about the accesses that have anything to do with this bug, and specifically, the methods that I modified. Those are all on the FX application thread. Unrelated to this bug, there are plenty of calls to Platform.runLater on other threads, which will indeed access the `Application.application` field from that other thread.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1506#discussion_r1678502901
More information about the openjfx-dev
mailing list