United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-7105040 [macosx] closed/javax/swing/JPopupMenu/4966112/bug4966112.java deadlocks on MacOS
JDK-7105040 : [macosx] closed/javax/swing/JPopupMenu/4966112/bug4966112.java deadlocks on MacOS

Details
Type:
Bug
Submit Date:
2011-10-26
Status:
Resolved
Updated Date:
2012-02-07
Project Name:
JDK
Resolved Date:
2012-02-07
Component:
client-libs
OS:
os_x
Sub-Component:
javax.swing
CPU:
x86
Priority:
P3
Resolution:
Fixed
Affected Versions:
7
Fixed Versions:

Related Reports
Backport:

Sub Tasks

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.
                                     
2011-11-28



Hardware and Software, Engineered to Work Together