JDK-8047288 : [macosx] Endless loop in EDT on Mac
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 8u5,9
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: os_x
  • CPU: x86_64
  • Submitted: 2014-06-18
  • Updated: 2015-01-21
  • Resolved: 2014-07-28
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 8 JDK 9
8u20Fixed 9 b28Fixed
Description
J2SE Version (please include all output from java -version flag):
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)


Does this problem occur on J2SE 7ux, 8ux?  Yes / No (pick one)
Unknown


Operating System Configuration Information (be specific):
OSX 10.9.3


Hardware Configuration Information (be specific):
IMac 24'' early 2009


Bug Description:
On open a popup window sporadic a 100% CPU occur and the GUI is not
responding. Details see in the follow Thread dump.
It look like that the thread "AWT-EventQueue-2" is polling on the native
thread "AWT-AppKit" which block from the "AWT-EventQueue-2"

The cause of the problem seems that the thread "AWT-AppKit" is accessing
the Swing GUI which is not valid. This seems a design mistake.

====================================
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode):

"JMX server connection timeout 345" #345 daemon prio=9 os_prio=31
tid=0x00007faca2884000 nid=0x11b07 in Object.wait() [0x000000012bfa2000]
  java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at
com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:168)
- locked <0x00000007bd80fb48> (a [I)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"RMI Scheduler(0)" #344 daemon prio=9 os_prio=31 tid=0x00007faca5c29800
nid=0x82f7 waiting on condition [0x000000012be9f000]
  java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007bd821728> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"RMI TCP Connection(2)-10.10.11.4" #343 daemon prio=9 os_prio=31
tid=0x00007faca58a6000 nid=0x10027 runnable [0x000000012b3f0000]
  java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
- locked <0x00000007bd82a678> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:539)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:812)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:671)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- <0x00000007bd820ec8> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"RMI TCP Accept-0" #342 daemon prio=9 os_prio=31 tid=0x00007faca2da3000
nid=0x120f3 runnable [0x000000012af6c000]
  java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at java.net.ServerSocket.accept(ServerSocket.java:513)
at
sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:389)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:361)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"Attach Listener" #341 daemon prio=9 os_prio=31 tid=0x00007faca5c52000
nid=0xf457 waiting on condition [0x0000000000000000]
  java.lang.Thread.State: RUNNABLE

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-10" #168 daemon prio=5 os_prio=31
tid=0x00007faca2882000 nid=0x12a57 waiting on condition [0x000000012c2d9000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-9" #165 daemon prio=5 os_prio=31
tid=0x00007faca2881000 nid=0x1291b waiting on condition [0x000000012c4df000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-8" #164 daemon prio=5 os_prio=31
tid=0x00007faca50f9800 nid=0xfa3f waiting on condition [0x000000012c3dc000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"TimeProcess #1" #76 prio=6 os_prio=31 tid=0x00007faca50ef800 nid=0xd90f
waiting on condition [0x000000011aec3000]
  java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.inet.helpdesk.util.TimeProcess.run(TimeProcess.java:153)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-7" #75 daemon prio=5 os_prio=31
tid=0x00007faca50f1000 nid=0x10a07 waiting on condition [0x000000011adc0000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-6" #74 daemon prio=5 os_prio=31
tid=0x00007faca2bdd000 nid=0x1070b waiting on condition [0x000000011acbd000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"Open Files Supervisor" #72 daemon prio=5 os_prio=31
tid=0x00007faca375f800 nid=0x13b03 waiting on condition [0x0000000129d56000]
  java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at
com.inet.helpdesk.plugins.attachments.client.OpenEditsSupervisor$SupervisionRunnable.run(OpenEditsSupervisor.java:149)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-5" #70 daemon prio=5 os_prio=31
tid=0x00007faca5245800 nid=0x13703 waiting on condition [0x0000000129b50000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-4" #69 daemon prio=5 os_prio=31
tid=0x00007faca5c20000 nid=0x13503 waiting on condition [0x0000000129a4d000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-3" #68 daemon prio=5 os_prio=31
tid=0x00007faca3767800 nid=0x13303 waiting on condition [0x000000012994a000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-2" #66 daemon prio=5 os_prio=31
tid=0x00007faca2ed5800 nid=0x12f03 waiting on condition [0x0000000129744000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"SwingWorker-pool-1-thread-1" #65 daemon prio=5 os_prio=31
tid=0x00007faca2ef4000 nid=0x12d03 waiting on condition [0x0000000129641000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b4974260> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"DeadLock Detector" #64 daemon prio=6 os_prio=31 tid=0x00007faca3712000
nid=0x12b03 waiting on condition [0x000000012953e000]
  java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at
com.inet.helpdesk.util.DeadLockDetector$MonitorThread.run(DeadLockDetector.java:277)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"clientThreads" #49 prio=5 os_prio=31 tid=0x00007faca51e5000 nid=0x11c0b
in Object.wait() [0x000000012756a000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)
- locked <0x00000007b46b1a68> (a com.inet.helpdesk.util.ThreadPool)
at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)
at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

  Locked ownable synchronizers:
- None

"Konnekter Ping" #47 daemon prio=5 os_prio=31 tid=0x00007faca2ef6800
nid=0x1060b in Object.wait() [0x0000000120ce7000]
  java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.inet.jj.cli.a.run(Unknown Source)
- locked <0x00000007b46a4cd8> (a java.util.Vector)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"clientThreads" #45 prio=5 os_prio=31 tid=0x00007faca51cd000 nid=0x11203
in Object.wait() [0x000000012093e000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)
- locked <0x00000007b46b1a68> (a com.inet.helpdesk.util.ThreadPool)
at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)
at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

  Locked ownable synchronizers:
- None

"clientThreads" #44 prio=5 os_prio=31 tid=0x00007faca35bf800 nid=0x11003
in Object.wait() [0x000000012083b000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)
- locked <0x00000007b46b1a68> (a com.inet.helpdesk.util.ThreadPool)
at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)
at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

  Locked ownable synchronizers:
- None

"clientThreads" #43 prio=5 os_prio=31 tid=0x00007faca51cb800 nid=0x10507
in Object.wait() [0x0000000120738000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)
- locked <0x00000007b46b1a68> (a com.inet.helpdesk.util.ThreadPool)
at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)
at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

  Locked ownable synchronizers:
- None

"clientThreads" #41 prio=5 os_prio=31 tid=0x00007faca35b3800 nid=0x1091f
in Object.wait() [0x0000000120532000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)
- locked <0x00000007b46b1a68> (a com.inet.helpdesk.util.ThreadPool)
at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)
at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

  Locked ownable synchronizers:
- None

"clientThreads" #40 prio=5 os_prio=31 tid=0x00007faca2ef5800 nid=0x10c2b
in Object.wait() [0x000000012042f000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at com.inet.helpdesk.util.ThreadPool.getNextThread(ThreadPool.java:44)
- locked <0x00000007b46b1a68> (a com.inet.helpdesk.util.ThreadPool)
at com.inet.helpdesk.util.ThreadPool.access$200(ThreadPool.java:5)
at com.inet.helpdesk.util.ThreadPool$WorkerThread.run(ThreadPool.java:64)

  Locked ownable synchronizers:
- None

"TimerQueue" #38 daemon prio=5 os_prio=31 tid=0x00007faca34f2000
nid=0xfc27 waiting on condition [0x0000000124af3000]
  java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b450a5b8> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:223)
at javax.swing.TimerQueue.run(TimerQueue.java:171)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- <0x00000007b450a8c8> (a
java.util.concurrent.locks.ReentrantLock$NonfairSync)

"AWT-EventQueue-2" #36 prio=6 os_prio=31 tid=0x00007faca2ca6000
nid=0xc107 runnable [0x000000011dd11000]
  java.lang.Thread.State: RUNNABLE
at sun.lwawt.macosx.CPlatformWindow.nativeGetNSWindowInsets(Native Method)
at sun.lwawt.macosx.CPlatformWindow.getInsets(CPlatformWindow.java:445)
at sun.lwawt.LWWindowPeer.initializeImpl(LWWindowPeer.java:197)
at sun.lwawt.LWComponentPeer.initialize(LWComponentPeer.java:313)
at sun.lwawt.LWToolkit.createDelegatedPeer(LWToolkit.java:211)
at sun.lwawt.LWToolkit.createWindow(LWToolkit.java:236)
at java.awt.Window.addNotify(Window.java:765)
- locked <0x00000007b408bd98> (a java.awt.Component$AWTTreeLock)
at java.awt.Window.pack(Window.java:807)
at
com.inet.helpdesk.usersearch.UserDisplayWindow.showData(UserDisplayWindow.java:133)
at
com.inet.helpdesk.usersearch.UserPopupHandler.showPopup(UserPopupHandler.java:73)
at
com.inet.helpdesk.usersearch.UserPopupHandler.access$400(UserPopupHandler.java:30)
at
com.inet.helpdesk.usersearch.UserPopupHandler$UserDataLoader$2.run(UserPopupHandler.java:248)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

  Locked ownable synchronizers:
- None

"TimerQueue" #34 daemon prio=5 os_prio=31 tid=0x00007faca2ce7000
nid=0x550f waiting on condition [0x0000000120244000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b446ddf0> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:211)
at javax.swing.TimerQueue.run(TimerQueue.java:171)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- <0x00000007b446e010> (a
java.util.concurrent.locks.ReentrantLock$NonfairSync)

"ConsoleTraceListener" #23 daemon prio=5 os_prio=31
tid=0x00007faca2b90000 nid=0xd203 in Object.wait() [0x000000011f538000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007b40e9a18> (a
com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)
at java.lang.Object.wait(Object.java:502)
at
com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$ConsoleWriterThread.run(Unknown
Source)
- locked <0x00000007b40e9a18> (a
com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)

  Locked ownable synchronizers:
- None

"Java2D Disposer" #22 daemon prio=10 os_prio=31 tid=0x00007faca2a8f000
nid=0xcf03 in Object.wait() [0x000000011ed7f000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)
- locked <0x00000007b410dba8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:158)
at sun.java2d.Disposer.run(Disposer.java:148)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"Java2D Queue Flusher" #21 daemon prio=10 os_prio=31
tid=0x00007faca2ae7000 nid=0xc907 in Object.wait() [0x000000011df18000]
  java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at
sun.java2d.opengl.OGLRenderQueue$QueueFlusher.run(OGLRenderQueue.java:203)
- locked <0x00000007b424d798> (a
sun.java2d.opengl.OGLRenderQueue$QueueFlusher)

  Locked ownable synchronizers:
- None

"AWT-EventQueue-1" #20 prio=6 os_prio=31 tid=0x00007faca3152000
nid=0xc303 waiting on condition [0x000000011de15000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b41b0820> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.awt.EventQueue.getNextEvent(EventQueue.java:542)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:170)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

  Locked ownable synchronizers:
- None

"DestroyJavaVM" #19 prio=5 os_prio=31 tid=0x00007faca280c000 nid=0x1b03
waiting on condition [0x0000000000000000]
  java.lang.Thread.State: RUNNABLE

  Locked ownable synchronizers:
- None

"Javaws Secure Thread" #17 daemon prio=5 os_prio=31
tid=0x00007faca314c800 nid=0xbf03 in Object.wait() [0x000000011dc0f000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007b41b3090> (a java.lang.Object)
at java.lang.Object.wait(Object.java:502)
at com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source)
- locked <0x00000007b41b3090> (a java.lang.Object)

  Locked ownable synchronizers:
- None

"AWT-EventQueue-0" #16 prio=6 os_prio=31 tid=0x00007faca314a000
nid=0xbe07 waiting on condition [0x000000011db0c000]
  java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000007b40f7638> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.awt.EventQueue.getNextEvent(EventQueue.java:542)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:170)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

  Locked ownable synchronizers:
- None

"AWT-Shutdown" #15 prio=5 os_prio=31 tid=0x00007faca2a90000 nid=0xa103
in Object.wait() [0x000000011d8f4000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295)
- locked <0x00000007b41b39c0> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"CacheCleanUpThread" #14 daemon prio=5 os_prio=31 tid=0x00007faca2a8d800
nid=0x9e07 in Object.wait() [0x000000011d5c4000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007b40f7888> (a com.sun.deploy.cache.CleanupThread)
at java.lang.Object.wait(Object.java:502)
at com.sun.deploy.cache.CleanupThread.run(Unknown Source)
- locked <0x00000007b40f7888> (a com.sun.deploy.cache.CleanupThread)

  Locked ownable synchronizers:
- None

"CacheMemoryCleanUpThread" #11 daemon prio=5 os_prio=31
tid=0x00007faca2a8c800 nid=0x9a03 in Object.wait() [0x000000011d4c1000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007b411f990> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)
- locked <0x00000007b411f990> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:158)
at
com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown
Source)

  Locked ownable synchronizers:
- None

"MemoryCache-DelayedCleanup" #12 daemon prio=5 os_prio=31
tid=0x00007faca30be800 nid=0x9907 in Object.wait() [0x000000011d3be000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.util.TimerThread.mainLoop(Timer.java:526)
- locked <0x00000007b40f9ce0> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)

  Locked ownable synchronizers:
- None

"traceMsgQueueThread" #9 daemon prio=5 os_prio=31 tid=0x00007faca2871800
nid=0x6227 in Object.wait() [0x000000011a855000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007b405c0a8> (a java.util.ArrayList)
at java.lang.Object.wait(Object.java:502)
at com.sun.deploy.trace.Trace$TraceMsgQueueChecker.run(Unknown Source)
- locked <0x00000007b405c0a8> (a java.util.ArrayList)
at java.lang.Thread.run(Thread.java:745)

  Locked ownable synchronizers:
- None

"AWT-AppKit" #8 daemon prio=5 os_prio=31 tid=0x00007faca306f800
nid=0x507 waiting for monitor entry [0x00007fff59e5f000]
  java.lang.Thread.State: BLOCKED (on object monitor)
at java.awt.Container.getComponentZOrder(Container.java:938)
- waiting to lock <0x00000007b408bd98> (a java.awt.Component$AWTTreeLock)
at javax.swing.LayoutComparator.compare(LayoutComparator.java:116)
at javax.swing.LayoutComparator.compare(LayoutComparator.java:42)
at java.util.TimSort.countRunAndMakeAscending(TimSort.java:356)
at java.util.TimSort.sort(TimSort.java:216)
at java.util.Arrays.sort(Arrays.java:1435)
at java.util.Collections.sort(Collections.java:230)
at
javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(SortingFocusTraversalPolicy.java:136)
at
javax.swing.SortingFocusTraversalPolicy.getFocusTraversalCycle(SortingFocusTraversalPolicy.java:110)
at
javax.swing.SortingFocusTraversalPolicy.getFirstComponent(SortingFocusTraversalPolicy.java:445)
at
javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(LayoutFocusTraversalPolicy.java:166)
at
javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(SortingFocusTraversalPolicy.java:535)
at java.awt.Window.isFocusableWindow(Window.java:2496)
at sun.lwawt.LWWindowPeer.isFocusableWindow(LWWindowPeer.java:1214)
at sun.lwawt.LWWindowPeer.focusAllowedFor(LWWindowPeer.java:1210)
at sun.lwawt.LWWindowPeer.requestWindowFocus(LWWindowPeer.java:1148)
at sun.lwawt.LWWindowPeer.notifyMouseEvent(LWWindowPeer.java:798)
at
sun.lwawt.macosx.CPlatformResponder.handleMouseEvent(CPlatformResponder.java:83)
at sun.lwawt.macosx.CPlatformView.deliverMouseEvent(CPlatformView.java:198)

  Locked ownable synchronizers:
- None

"Service Thread" #7 daemon prio=9 os_prio=31 tid=0x00007faca2841000
nid=0x4903 runnable [0x0000000000000000]
  java.lang.Thread.State: RUNNABLE

  Locked ownable synchronizers:
- None

"C1 CompilerThread1" #6 daemon prio=9 os_prio=31 tid=0x00007faca3057000
nid=0x4703 waiting on condition [0x0000000000000000]
  java.lang.Thread.State: RUNNABLE

  Locked ownable synchronizers:
- None

"C2 CompilerThread0" #5 daemon prio=9 os_prio=31 tid=0x00007faca2840000
nid=0x4503 waiting on condition [0x0000000000000000]
  java.lang.Thread.State: RUNNABLE

  Locked ownable synchronizers:
- None

"Signal Dispatcher" #4 daemon prio=9 os_prio=31 tid=0x00007faca303f800
nid=0x4303 runnable [0x0000000000000000]
  java.lang.Thread.State: RUNNABLE

  Locked ownable synchronizers:
- None

"Finalizer" #3 daemon prio=8 os_prio=31 tid=0x00007faca2839000
nid=0x2f03 in Object.wait() [0x0000000118733000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)
- locked <0x00000007b411bac0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:158)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

  Locked ownable synchronizers:
- None

"Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x00007faca3006000
nid=0x2d03 in Object.wait() [0x0000000118630000]
  java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)
- locked <0x00000007b411fcb0> (a java.lang.ref.Reference$Lock)

  Locked ownable synchronizers:
- None

"VM Thread" os_prio=31 tid=0x00007faca2838800 nid=0x2b03 runnable

"GC task thread#0 (ParallelGC)" os_prio=31 tid=0x00007faca2818000
nid=0x2703 runnable

"GC task thread#1 (ParallelGC)" os_prio=31 tid=0x00007faca3009000
nid=0x2903 runnable

"VM Periodic Task Thread" os_prio=31 tid=0x00007faca2841800 nid=0x4b03
waiting on condition

JNI global references: 956

Comments
Quite a serious issue. No workaround. But not a stopper. Too late for PIT unfortunately. Any way, SQE OK to have it in CPU14_04 GAC build.
08-09-2014

it might be consider to fix in 8u once we have fix done in 9
27-06-2014

1. Window.isFocusableWindow() method can be @Overridden by user code. Under normal circumstances, AWT should never call such methods directly from the toolkit thread. That is the reason there are various _NoClientCode() methods (e.g Component.getFont_NoClientCode(), etc.) The stack trace from the Description of this issue suggests that we violate this rule in LWAWT. And this needs fixing. 2. Using a nested event loop sounds like a viable solution, and it would automatically resolve the _NoClientCode() issue btw because we would no longer call this method from AppKit directly. But I agree it isn't a low-risk solution. 3. I doubt it is a good idea to leave this bug unfixed for 8u20. This is an important update release containing lots of fixes for problems that were left unresolved in 8 GA. Also, so far as I know, IDEA is one of the most popular Java IDEs in the world (note, myself, I don't use this IDE, so I'm not an interested party here). If developers can't run IDEA with 8u20, this looks bad to me. However, I agree that we need to assess all the risks before proposing the fix for 8u20.
26-06-2014

To fix this particular issue we have several options: 1. Open a nested loop and go to EDT synchronously. 2. Try to cache the isFocusable on peer level somehow. Anthony, I actually did not understand your _NoClientCode() suggestion. What do you mean exactly? I think we cannot fix it for 8u20. It's in a very late release stage now, and all the solutions I can imagine are pretty risky. This is only a part of a bigger issue. Recently I've made a javaagent that instruments loaded classes to check for illegal AppKit thread access. Running only a little part of our regression test suite with my tool I found lots and lots of potential deadlocks and methods illegally called on Appkit. So we were thinking if it's possible to provide something more general that point fixes for each deadlock.
26-06-2014

This looks like a pretty serious issue to me. Also note that JetBrains have just reported that IDEA dead-locks because of this bug when running with 8u20b19. I suggest to increase the priority to P2 and try to fix this issue for 8u20. On a side note, it looks pretty insane that Window.isFocusableWindow() involves a sort operation, but that seems to be a separate issue. The real problem is that this method is called directly from the AppKit thread. This begs for some _NoClientCode() solution (not sure if this is going to help directly, but this is still a necessary part of the fix), or caching the value in the peer, or doing something else.
26-06-2014

requires back port
26-06-2014

That's another example of a problem we can get if we call target methods directly.
19-06-2014