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

Aleksey Shipilev shade at openjdk.java.net
Wed Oct 7 07:16:08 UTC 2020


On Sat, 3 Oct 2020 00:03:07 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

> The "discardingMouseEvents" flag in the SunDragSourceContextPeer class is used on the different threads without any
> synchronization.

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?

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

Marked as reviewed by shade (Reviewer).

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


More information about the awt-dev mailing list