<AWT Dev> RFR: 8253681: closed java/awt/dnd/MouseEventAfterStartDragTest/MouseEventAfterStartDragTest.html test failed

Aleksey Shipilev shade at openjdk.java.net
Thu Oct 8 07:31:46 UTC 2020


On Wed, 7 Oct 2020 23:35:00 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

>> As far as I can see, the only effect `volatile` has here is making sure the successive calls to `checkEvent` eventually
>> get the updated value of `discardingMouseEvents`. This does not seem to resolve the original race: calls to
>> `checkEvent` can still see old values of `discardingMouseEvents` for a while, therefore some events can still leak.
>> Turning the flag `volatile` makes it less likely, which might drop the error frequency under the testability threshold.
>> Still, it might be good as the stop-gap.  The iron-clad fix would be to synchronously insert something like
>> `DiscardMouseEvent` on the beginning of event queue, and `AcceptMouseEvent` at the end of it, and let the `EventQueue`
>> processor thread manage the flag -- so that `EventQueue` serializes everything, like it is designed to?
>
>> The iron-clad fix would be to synchronously insert something like `DiscardMouseEvent` on the beginning of event queue,
>> and `AcceptMouseEvent` at the end of it, and let the `EventQueue` processor thread manage the flag -- so that
>> `EventQueue` serializes everything, like it is designed to?
> 
> Unfortunately, it is not possible to store this flag in EventQueue nor EventDispatchThread and maintain it using
> upcoming events, the JVM may run a few applications in parallel so it may have more than one
> EventQueue/EventDispatchThread and this code was written to discard all events in all apps while one of them start
> DnD.  The code could be changed though when the support of multiple EventQueue/EventDispatchThread will be finally
> dropped.

No problem. I was pointing out the `volatile` just makes us more lucky, does not fix the whole issue. Of course, it
might be better than nothing.

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

PR: https://git.openjdk.java.net/jdk/pull/491


More information about the awt-dev mailing list