RFR: 8295707: Create a regression test for JDK-7184401 [v2]
Alexey Ivanov
aivanov at openjdk.org
Tue Dec 20 14:46:00 UTC 2022
On Fri, 2 Dec 2022 05:40:06 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:
>> There was a comment in the original code before the realSync() call that was removed, which perhaps should have been left as is.
>> // cannot substitute with robot.waitForIdle() presumably because of flushPendingEvents() there
>> My understanding of above is that for simulating the test scenario - which is - Events (on line 75,76,77) are triggered and while these are potentially not yet complete(as they are wrapped in an invokeLater), the edt is interrupted.
>>
>> When run on jdk7u6 - the UI hangs and SOP of line 59 is not invoked.
>> When run on jdk7u361 b01 the SOP on line 59 is printed and also the test passed.
>>
>> waitForIdle here will trigger the flushPendingEvents internally before the edt interrupt call -and that would eliminate any possibility of simulating the above scenario.
>
> Then please double-check how robot.waitForIdle() and realSync() affect the test, since both call the flushPendingEvents(), why there is a difference?
> * robot.waitForIdle()->SunToolkit.flushPendingEvents();
> * realSync()->waitForIdle()->flushPendingEvents
That's right. If the test hangs when `Robot.waitForIdle` is called, it looks like another problem in the JDK.
`Robot.waitForIdle` calls `SunToolkit.flushPendingEvents` followed by `SunToolkit.realSync`.
`SunToolkit.realSync`, in its turn, calls `SunToolKit.waitForIdle` in a loop which calls `SunToolkit.flushPendingEvents`.
It looks like a problem to me.
-------------
PR: https://git.openjdk.org/jdk/pull/10784
More information about the client-libs-dev
mailing list