Integrated: 8351067: Enforce Platform threading use
Andy Goryachev
angorya at openjdk.org
Fri Mar 14 14:45:02 UTC 2025
On Tue, 4 Mar 2025 19:00:06 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
> Summary
> -------
>
> Adds a thread check to a number of `Platform` methods:
>
> accessibilityActiveProperty()
> getPreferences()
> isAccessibilityActive()
>
> These methods will throw an `IllegalStateException` if called on a thread other than the JavaFX Application Thread.
>
> Problem
> -------
>
> JavaFX allows the Nodes and Scenes to be created and modified on any thread as long as they are not yet attached to a `Window` that is showing.
>
> This is allowed in an implicit assumption that the construction code only modifies the properties of the said Nodes and Scenes, but not other static or global entities. Concurrent multi-threaded access of such entities not only breaks the initialization of the properties, but also causes the failures down the road, if the change to the global properties happens while the Nodes and Scenes are still being constructed.
>
> Even JavaFX platform developers did not avoid tripping over this issue, as can be illustrated by https://bugs.openjdk.org/browse/JDK-8348987 .
>
> Solution
> --------
>
> Fail each method fast with an `IllegalStateException` if called from a background thread.
>
> While this solution won't prevent other possible abuse, such as getting a reference to the property in the JavaFX Application Thread and later accessing it in a background thread, adding a check and allowing these methods to fail fast should prevent most likely scenarios.
This pull request has now been integrated.
Changeset: a87f0a55
Author: Andy Goryachev <angorya at openjdk.org>
URL: https://git.openjdk.org/jfx/commit/a87f0a55114e23ba6caeae28be7c910da584b5fa
Stats: 42 lines in 2 files changed: 24 ins; 14 del; 4 mod
8351067: Enforce Platform threading use
Reviewed-by: kcr, mstrauss
-------------
PR: https://git.openjdk.org/jfx/pull/1728
More information about the openjfx-dev
mailing list