Currently the shape's Z Position is modified within the mouse event dispatcher (Input EDT/thread) as well as read on same thread and on a renderer thread using Arrays.sort(..). The position might also been modified on another thread than the Input EDT/thread, e.g. the renderer thread -> Data race condition, inconsistency. Arrays.sort(..) using TimSort detects the data race sometimes, i.e. throws an exception since the equals methods doesn't match anymore: Exception in thread "main-Display-.x11_:0-1-EDT-1" java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.base/java.util.TimSort.mergeHi(TimSort.java:903) at java.base/java.util.TimSort.mergeAt(TimSort.java:520) at java.base/java.util.TimSort.mergeForceCollapse(TimSort.java:461) at java.base/java.util.TimSort.sort(TimSort.java:254) at java.base/java.util.Arrays.sort(Arrays.java:1233) at jogamp.graph.ui.TreeTool.forSortedAll(TreeTool.java:132) at com.jogamp.graph.ui.Group.forSortedAll(Group.java:369) at jogamp.graph.ui.TreeTool.forSortedAll(TreeTool.java:141) at com.jogamp.graph.ui.Scene.forSortedAll(Scene.java:739) at com.jogamp.graph.ui.Scene.pickShape(Scene.java:563) at com.jogamp.graph.ui.Scene.dispatchMouseEventPickShape(Scene.java:996) at com.jogamp.graph.ui.Scene$SBCMouseListener.mouseMoved(Scene.java:1096) at jogamp.newt.WindowImpl.dispatchMouseEvent(WindowImpl.java:4498) at jogamp.newt.WindowImpl.consumePointerEvent(WindowImpl.java:4346) at jogamp.newt.WindowImpl.consumeEvent(WindowImpl.java:3744) at jogamp.newt.WindowImpl.doEvent(WindowImpl.java:3686) at jogamp.newt.WindowImpl.doPointerEvent(WindowImpl.java:4131) at jogamp.newt.WindowImpl.doMouseEvent(WindowImpl.java:3794) at jogamp.newt.driver.x11.WindowDriver.doMouseEvent(WindowDriver.java:489) at jogamp.newt.WindowImpl.sendMouseEvent(WindowImpl.java:3761) at jogamp.newt.driver.x11.DisplayDriver.DispatchMessages0(Native Method) at jogamp.newt.driver.x11.DisplayDriver.dispatchMessagesNative(DisplayDriver.java:112) at jogamp.newt.DisplayImpl.dispatchMessages(DisplayImpl.java:753) at jogamp.newt.DisplayImpl$7.run(DisplayImpl.java:672) at jogamp.newt.DefaultEDTUtil$NEDT.run(DefaultEDTUtil.java:347) Exception in thread "main-Display-.x11_:0-1-EDT-1" java.lang.RuntimeException: X11Display.DispatchMessages0: MotionNotify: Exception occured at sendMouseEvent(..) at jogamp.newt.driver.x11.DisplayDriver.DispatchMessages0(Native Method) at jogamp.newt.driver.x11.DisplayDriver.dispatchMessagesNative(DisplayDriver.java:112) at jogamp.newt.DisplayImpl.dispatchMessages(DisplayImpl.java:753) at jogamp.newt.DisplayImpl$7.run(DisplayImpl.java:672)
This bug became more visible since adding feature of Bug 1454