On Wed, 5 Nov 2025 15:25:23 GMT, Andy Goryachev <[email protected]> wrote:
>> @prsadhuk You are correct. There is no thread switching in that block (it's
>> all on the FX app thread, which creates an event and then sends that created
>> event to the EDT).
>>
>> Go ahead and integrate this PR.
>
> yes, the block is on the fx thread, but the value of lwFrame is modified on
> the EDT.
> Instead of this code where check and use happens with the volatile lwFrame,
> it should instead get the value into a temp variable and use that.
>
>
> var lw = lwFrame;
> if(lw != null) {
> use(lw)
> }
>
>
> here is the scenario, the way I see it:
>
> swing fx
> not null
> L557, not null
> (context switch)
> sets to null
> (context switch)
> L559, null
>
>
> unlikely, but possible, I think.
Yes, the scenario you pointed out is possible -- it's different from the (more
serious) issue that I was thinking it was. And the solution is exactly as you
point out: store it in a temp variable rather than reading it twice since the
value can change between successive reads.
@prsadhuk Please file a follow-up bug.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1960#discussion_r2495140272