Skip to content

Instantly share code, notes, and snippets.

View stacktracer's full-sized avatar

Mike Hogye stacktracer

  • Metron, Inc.
  • Leesburg, VA
View GitHub Profile
@stacktracer
stacktracer / PopupTest2.java
Last active August 29, 2015 14:14
Popup Test with Workaround
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLProfile;
import javax.swing.JFrame;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import com.jogamp.newt.awt.NewtCanvasAWT;
import com.jogamp.newt.event.MouseAdapter;
@stacktracer
stacktracer / PopupTest.java
Created February 6, 2015 17:22
Popup Test
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLProfile;
import javax.swing.JFrame;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import com.jogamp.newt.awt.NewtCanvasAWT;
import com.jogamp.newt.event.MouseAdapter;
@stacktracer
stacktracer / gist:11266465
Created April 24, 2014 19:25
Trigger deadlock in waitForVisible
public static void main( String[] args ) throws Exception
{
GLAutoDrawable contextOwner = GLUtils.newOffscreenDrawable( GLProfile.GL2GL3 );
GLContext context = contextOwner.getContext( );
final JTabbedPane tabbedPane = new JTabbedPane( );
JFrame frame = FrameUtils.newFrame( "AWT Deadlock Example", tabbedPane, JFrame.EXIT_ON_CLOSE );
FrameUtils.showFrameCentered( frame );
for ( int i = 0; i < 100; i++)
@stacktracer
stacktracer / stackdump
Last active January 2, 2016 00:49
Glimpse 2 (JOGL 2) deadlock between event thread (which has the AWT lock) and render thread (which has the GlimpseLayout lock)
"main-Display-.x11_:0-1-EDT-1" daemon prio=10 tid=0x00007f740c084000 nid=0x5616 waiting on condition [0x00007f7405b12000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006898883a8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:214)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)
public static <V> V callInterruptibly(Callable<V> callable) throws InterruptedException
{
ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactory()
{
public Thread newThread(Runnable runnable)
{
Thread thread = Executors.defaultThreadFactory().newThread(runnable);
thread.setDaemon(true);
return thread;
}