JDK-7105040 : [macosx] closed/javax/swing/JPopupMenu/4966112/bug4966112.java deadlocks on MacOS
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.swing
  • Affected Version: 7
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: os_x
  • CPU: x86
  • Submitted: 2011-10-26
  • Updated: 2015-03-04
  • Resolved: 2012-02-07
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 JDK 8
7u4Fixed 8 b25Fixed
Related Reports
Relates :  
Description
closed/javax/swing/JPopupMenu/4966112/bug4966112.java deadlocks on MacOS

Stacktrace:

2011-10-26 14:21:52
Full thread dump OpenJDK 64-Bit Server VM (21.0-b17 mixed mode):

"Attach Listener" daemon prio=5 tid=4331829248 nid=0x10cf86000 waiting on condition [0]
   java.lang.Thread.State: RUNNABLE

"TimerQueue" daemon prio=5 tid=4305305600 nid=0x10c83c000 waiting on condition [4504924160]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <33869869624> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.DelayQueue.take(DelayQueue.java:209)
	at javax.swing.TimerQueue.run(TimerQueue.java:171)
	at java.lang.Thread.run(Thread.java:722)

"AWT-EventQueue-0" prio=5 tid=4330903552 nid=0x109b88000 waiting on condition [4458045440]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <33865899216> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.awt.EventQueue.getNextEvent(EventQueue.java:515)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:209)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:150)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:240)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:142)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:134)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

"Java2D Disposer" daemon prio=5 tid=4330659840 nid=0x109941000 in Object.wait() [4455661568]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <33865968656> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
	- locked <33865968656> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
	at sun.java2d.Disposer.run(Disposer.java:145)
	at java.lang.Thread.run(Thread.java:722)

"Java2D Queue Flusher" daemon prio=5 tid=4329469952 nid=0x109037000 in Object.wait() [4446183424]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <33865964640> (a sun.java2d.opengl.OGLRenderQueue$QueueFlusher)
	at sun.java2d.opengl.OGLRenderQueue$QueueFlusher.run(OGLRenderQueue.java:194)
	- locked <33865964640> (a sun.java2d.opengl.OGLRenderQueue$QueueFlusher)

"AWT-Shutdown" prio=5 tid=4329553920 nid=0x106db7000 in Object.wait() [4410007552]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <33866220280> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:503)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:287)
	- locked <33866220280> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:722)

"AWT-AppKit" daemon prio=5 tid=4329588736 nid=0x7fff74e6b960 runnable [0]
   java.lang.Thread.State: RUNNABLE

"MainThread" prio=5 tid=4304168960 nid=0x106a93000 in Object.wait() [4406710272]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <33865869440> (a java.awt.Component$AWTTreeLock)
	at java.lang.Object.wait(Object.java:503)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:247)
	- locked <33865869440> (a java.awt.Component$AWTTreeLock)
	at java.awt.Dialog.show(Dialog.java:1070)
	at javax.swing.JFileChooser.showDialog(JFileChooser.java:741)
	at javax.swing.JFileChooser.showOpenDialog(JFileChooser.java:639)
	at bug4966112.main(bug4966112.java:164)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:94)
	at java.lang.Thread.run(Thread.java:722)

"Service Thread" daemon prio=5 tid=4329048064 nid=0x10688d000 runnable [0]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" daemon prio=5 tid=4329046016 nid=0x10678a000 waiting on condition [0]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" daemon prio=5 tid=4329005056 nid=0x106687000 waiting on condition [0]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=5 tid=4329000960 nid=0x106584000 runnable [0]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=5 tid=4328806400 nid=0x105fc7000 in Object.wait() [4395393024]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <33864832440> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
	- locked <33864832440> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)

"Reference Handler" daemon prio=5 tid=4303642624 nid=0x105ec4000 in Object.wait() [4394332160]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <33864831288> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:503)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
	- locked <33864831288> (a java.lang.ref.Reference$Lock)

"main" prio=5 tid=4328521728 nid=0x100501000 in Object.wait() [4300210176]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <33865609704> (a java.lang.Thread)
	at java.lang.Thread.join(Thread.java:1261)
	- locked <33865609704> (a java.lang.Thread)
	at java.lang.Thread.join(Thread.java:1335)
	at com.sun.javatest.regtest.MainWrapper.main(MainWrapper.java:71)

"VM Thread" prio=5 tid=4303632384 nid=0x105dc1000 runnable 

"GC task thread#0 (ParallelGC)" prio=5 tid=4328568832 nid=0x101e36000 runnable 

"GC task thread#1 (ParallelGC)" prio=5 tid=4328570880 nid=0x101f39000 runnable 

"VM Periodic Task Thread" prio=5 tid=4328865792 nid=0x106990000 waiting on condition 

JNI global references: 511

Comments
EVALUATION The UI creation is moved from the main thread to the EDT. After that the test does not hang on the tested Mac OS X. The test is moved from the closed repository to the open.
28-11-2011