RFR: 8252713: jtreg time out of CtrlASCII.java seems to hang the Xserver.
Alexander Zvegintsev
azvegint at openjdk.org
Thu Nov 17 20:51:19 UTC 2022
On Thu, 17 Nov 2022 19:43:14 GMT, Phil Race <prr at openjdk.org> wrote:
> Although I wonder if that wouldn't be a bug in the collections classes ?
Don't think so,
* `invokeAndWait` is called on main thread while holding lock on the hashtable
* synchronized `Hastable#containsKey` method is called on EDT
So EDT is blocked by hashtable, main is waiting while event posted to EDT will be processed.
stacktraces are below:
> "main" #1 [223509] prio=5 os_prio=0 cpu=646,16ms elapsed=70,88s tid=0x00007fe2d4029a70 nid=223509 in Object.wait() [0x00007fe2d9449000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait0(java.base at 20-ea/Native Method)
- waiting on <0x0000000629436510> (a java.awt.EventQueue$1AWTInvocationLock)
at java.lang.Object.wait(java.base at 20-ea/Object.java:366)
at java.lang.Object.wait(java.base at 20-ea/Object.java:339)
**at java.awt.EventQueue.invokeAndWait(java.desktop at 20-ea/EventQueue.java:1365)**
- locked <0x0000000629436510> (a java.awt.EventQueue$1AWTInvocationLock)
at java.awt.EventQueue.invokeAndWait(java.desktop at 20-ea/EventQueue.java:1346)
at sun.awt.SunToolkit.realSync(java.desktop at 20-ea/SunToolkit.java:1492)
at sun.awt.SunToolkit.realSync(java.desktop at 20-ea/SunToolkit.java:1438)
at java.awt.Robot.waitForIdle(java.desktop at 20-ea/Robot.java:688)
- locked <0x0000000629428d30> (a java.awt.Robot)
at java.awt.Robot.autoWaitForIdle(java.desktop at 20-ea/Robot.java:619)
at java.awt.Robot.afterEvent(java.desktop at 20-ea/Robot.java:592)
at java.awt.Robot.keyRelease(java.desktop at 20-ea/Robot.java:371)
- locked <0x0000000629428d30> (a java.awt.Robot)
at CtrlASCII.punchCtrlKey(CtrlASCII.java:225)
at CtrlASCII.lambda$start$0(CtrlASCII.java:202)
at CtrlASCII$$Lambda$343/0x0000000801151088.accept(Unknown Source)
**at java.util.Hashtable.forEach(java.base at 20-ea/Hashtable.java:893)
- locked <0x00000006298b6b40> (a java.util.Hashtable)**
at CtrlASCII.start(CtrlASCII.java:201)
at CtrlASCII.main(CtrlASCII.java:162)
at java.lang.invoke.LambdaForm$DMH/0x0000000801030c00.invokeStatic(java.base at 20-ea/LambdaForm$DMH)
at java.lang.invoke.LambdaForm$MH/0x0000000801158000.invoke(java.base at 20-ea/LambdaForm$MH)
at java.lang.invoke.Invokers$Holder.invokeExact_MT(java.base at 20-ea/Invokers$Holder)
at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base at 20-ea/DirectMethodHandleAccessor.java:155)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base at 20-ea/DirectMethodHandleAccessor.java:104)
at java.lang.reflect.Method.invoke(java.base at 20-ea/Method.java:578)
at com.sun.tools.javac.launcher.Main.execute(jdk.compiler at 20-ea/Main.java:435)
at com.sun.tools.javac.launcher.Main.run(jdk.compiler at 20-ea/Main.java:205)
at com.sun.tools.javac.launcher.Main.main(jdk.compiler at 20-ea/Main.java:132)
> "AWT-EventQueue-0" #43 [223550] prio=6 os_prio=0 cpu=26,14ms elapsed=70,34s tid=0x00007fe21c006200 nid=223550 waiting for monitor entry [0x00007fe2a02e7000]
java.lang.Thread.State: BLOCKED (on object monitor)
**at java.util.Hashtable.containsKey(java.base at 20-ea/Hashtable.java:352)**
- **waiting to lock <0x00000006298b6b40>** (a java.util.Hashtable)
at CtrlASCII.keyTyped(CtrlASCII.java:241)
at java.awt.Component.processKeyEvent(java.desktop at 20-ea/Component.java:6575)
at java.awt.Component.processEvent(java.desktop at 20-ea/Component.java:6397)
at java.awt.TextComponent.processEvent(java.desktop at 20-ea/TextComponent.java:694)
at java.awt.TextField.processEvent(java.desktop at 20-ea/TextField.java:637)
at java.awt.Component.dispatchEventImpl(java.desktop at 20-ea/Component.java:4995)
at java.awt.Component.dispatchEvent(java.desktop at 20-ea/Component.java:4827)
at java.awt.KeyboardFocusManager.redispatchEvent(java.desktop at 20-ea/KeyboardFocusManager.java:1952)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(java.desktop at 20-ea/DefaultKeyboardFocusManager.java:883)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(java.desktop at 20-ea/DefaultKeyboardFocusManager.java:1146)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(java.desktop at 20-ea/DefaultKeyboardFocusManager.java:1020)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(java.desktop at 20-ea/DefaultKeyboardFocusManager.java:848)
at java.awt.Component.dispatchEventImpl(java.desktop at 20-ea/Component.java:4876)
at java.awt.Container.dispatchEventImpl(java.desktop at 20-ea/Container.java:2324)
at java.awt.Window.dispatchEventImpl(java.desktop at 20-ea/Window.java:2780)
at java.awt.Component.dispatchEvent(java.desktop at 20-ea/Component.java:4827)
at java.awt.EventQueue.dispatchEventImpl(java.desktop at 20-ea/EventQueue.java:775)
at java.awt.EventQueue$4.run(java.desktop at 20-ea/EventQueue.java:720)
at java.awt.EventQueue$4.run(java.desktop at 20-ea/EventQueue.java:714)
at java.security.AccessController.executePrivileged(java.base at 20-ea/AccessController.java:778)
at java.security.AccessController.doPrivileged(java.base at 20-ea/AccessController.java:400)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base at 20-ea/ProtectionDomain.java:87)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base at 20-ea/ProtectionDomain.java:98)
at java.awt.EventQueue$5.run(java.desktop at 20-ea/EventQueue.java:747)
at java.awt.EventQueue$5.run(java.desktop at 20-ea/EventQueue.java:745)
at java.security.AccessController.executePrivileged(java.base at 20-ea/AccessController.java:778)
at java.security.AccessController.doPrivileged(java.base at 20-ea/AccessController.java:400)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base at 20-ea/ProtectionDomain.java:87)
at java.awt.EventQueue.dispatchEvent(java.desktop at 20-ea/EventQueue.java:744)
at java.awt.EventDispatchThread.pumpOneEventForFilters(java.desktop at 20-ea/EventDispatchThread.java:203)
at java.awt.EventDispatchThread.pumpEventsForFilter(java.desktop at 20-ea/EventDispatchThread.java:124)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(java.desktop at 20-ea/EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(java.desktop at 20-ea/EventDispatchThread.java:109)
at java.awt.EventDispatchThread.pumpEvents(java.desktop at 20-ea/EventDispatchThread.java:101)
at java.awt.EventDispatchThread.run(java.desktop at 20-ea/EventDispatchThread.java:90)
-------------
PR: https://git.openjdk.org/jdk/pull/11214
More information about the client-libs-dev
mailing list