Posted by
Sven Gothel on
URL: https://forum.jogamp.org/Deadlock-during-JOGL-initialization-tp4025625p4025626.html
On 07/23/2012 03:43 PM, toffegast [via jogamp] wrote:
> Hi guys,
>
> When deploying my applet with JOGL RC9, initialization of the applet freezes
> sometimes. It seems to happen just when the GLCanvas is set visible for the
> first time. It happens only under certain circumstances (computer, browser,
> type of embedding, deployment), but there is no pattern. It is repeatable
> however.
Please check w/ latest source code / autobuilds,
locking code has been revised.
However .. the lock mentioned below doesn't seem to be JOGL
related.
>
> I can't make anything of the stack traces above, as I don't see any JOGL
methods.
>
> Do the JOGL developers know what is going on? Is there any way in which I can
> further research this or add to the solution? Note that I tried to use
> -Djnlp.nativewindow.debug=all -Djnlp.jogl.debug=all but can't get it to work
> with an applet in a browser.
>
With latest source code, it will work .. sorry.
Next release soon.
> Thanks!
>
> I fired up VisualVM to have a look and it reported a deadlock:
>
> Found one Java-level deadlock:
> =============================
> "SysExecutionThead":
> waiting for ownable synchronizer 0x1f315930, (a
> java.util.concurrent.locks.ReentrantLock$NonfairSync),
> which is held by "TimerQueue"
> "TimerQueue":
> waiting for ownable synchronizer 0x1f31f0e0, (a
> java.util.concurrent.locks.ReentrantLock$NonfairSync),
> which is held by "AWT-EventQueue-2"
> "AWT-EventQueue-2":
> waiting to lock monitor 0x04adf364 (object 0x1f605ed0, a
> sun.awt.PostEventQueue),
> which is held by "TimerQueue"
>
> Java stack information for the threads listed above:
> ===================================================
> "SysExecutionThead":
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x1f315930> (a
> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> at java.util.concurrent.locks.LockSupport.park(Unknown Source)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown
> Source)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown
> Source)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
> at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Unknown
> Source)
> at java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
> at sun.awt.SunToolkit.flushPendingEvents(Unknown Source)
> at java.awt.EventQueue.postEvent(Unknown Source)
> at java.awt.EventQueue.invokeLater(Unknown Source)
> at javax.swing.SwingUtilities.invokeLater(Unknown Source)
> at
> com.sun.deploy.uitoolkit.impl.awt.ui.SwingConsoleWindow$26.execute(Unknown
> Source)
> at sun.plugin.util.PluginSysUtil$SysExecutionThread.run(Unknown Source)
> "TimerQueue":
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x1f31f0e0> (a
> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> at java.util.concurrent.locks.LockSupport.park(Unknown Source)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown
> Source)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown
> Source)
> at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
> at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(Unknown
> Source)
> at java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
> at java.awt.EventQueue.postEventPrivate(Unknown Source)
> at java.awt.EventQueue.postEvent(Unknown Source)
> at sun.awt.PostEventQueue.flush(Unknown Source)
> - locked <0x1f605ed0> (a sun.awt.PostEventQueue)
> at sun.awt.SunToolkit.flushPendingEvents(Unknown Source)
> at java.awt.EventQueue.postEvent(Unknown Source)
> at java.awt.EventQueue.invokeLater(Unknown Source)
> at javax.swing.SwingUtilities.invokeLater(Unknown Source)
> at javax.swing.Timer$1.run(Unknown Source)
> at javax.swing.Timer$1.run(Unknown Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.swing.Timer.post(Unknown Source)
> at javax.swing.TimerQueue.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> "AWT-EventQueue-2":
> at sun.awt.PostEventQueue.noEvents(Unknown Source)
> - waiting to lock <0x1f605ed0> (a sun.awt.PostEventQueue)
> at sun.awt.SunToolkit.isPostEventQueueEmpty(Unknown Source)
> at java.awt.EventQueue.detachDispatchThread(Unknown Source)
> at java.awt.EventDispatchThread.run(Unknown Source)
>