rainb0w-light / lanterna

Automatically exported from code.google.com/p/lanterna
GNU Lesser General Public License v3.0
0 stars 0 forks source link

Random white screen with SwingTerminal #2

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
On Ubuntu 10.04, sometimes when launching the SwingTerminal, the window starts 
all white and it doesn't draw anything. Seems very random, still haven't been 
able to figure out to reproduce it.

Unverified on any other platform

Original issue reported on code.google.com by mab...@gmail.com on 28 Jun 2010 at 7:32

GoogleCodeExporter commented 9 years ago
Can't reproduce

Original comment by mab...@gmail.com on 7 Jul 2012 at 9:02

GoogleCodeExporter commented 9 years ago
The problem still there somewhere,it happend to me on my windows(Windows 7 
Ultimate) box,i have not tested it on my linux box yet.

SwingTerminal seems to fail loading or something,after it happends i just use 
to re-rerun it and it usually doesn't happen again,its very random.  :(

Original comment by zer0.c...@gmail.com on 14 Jul 2012 at 6:08

GoogleCodeExporter commented 9 years ago
Ok, let's re-open this. I haven't seen it happen for a while, I think I did 
something a while back which made it go away. Let's keep our eyes open and put 
anything that may be related here...

Original comment by mab...@gmail.com on 15 Jul 2012 at 1:23

GoogleCodeExporter commented 9 years ago
It's a pity.

This problem makes the program unstable.

Original comment by pinon.pi...@gmail.com on 4 Feb 2013 at 9:42

GoogleCodeExporter commented 9 years ago
This hasn't happened to me in a long time now, anyone who's seen it recently?

Original comment by mab...@gmail.com on 4 Feb 2013 at 12:23

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Yes me, many times per day.

About, one in Ten.
I'm obliged to kill swing terminal and relaunch my software.

I'm on Debian 64bits in Gnome-Shell 3.4

Original comment by pinon.pi...@gmail.com on 4 Feb 2013 at 2:38

GoogleCodeExporter commented 9 years ago
Okay, could you please make a minimal example that reproduces this behavior and 
post it here? I still can't get it to trigger on my side...

Original comment by mab...@gmail.com on 4 Feb 2013 at 10:53

GoogleCodeExporter commented 9 years ago
-----
Debian 64bits / Gnome-Shell 3.4
Java (Sun) version :
   java version "1.6.0_26"
   Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
   Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
-----

Lauched by a simple : java -jar test.jar

-----
    public static void main(String[] args) {

        GUIScreen textGUI = TerminalFacade.createGUIScreen();
        if (textGUI == null) {
            return;
        }
        textGUI.getScreen().startScreen();

        Window window = new Window("test");
        window.addComponent(new Label("test"));
        textGUI.showWindow(window, GUIScreen.Position.CENTER);
    }
-----

Thanks,

Original comment by pinon.pi...@gmail.com on 6 Feb 2013 at 6:34

GoogleCodeExporter commented 9 years ago
I've tried it 20 times on XFCE but still no problem. Will try to find a Gnome 
installation somewhere to try on; it may be related to desktop compositing.

Original comment by mab...@gmail.com on 17 Feb 2013 at 1:32

GoogleCodeExporter commented 9 years ago
I'm seeing the same issue, too. As far as I can tell, just starting and 
stopping the Screen seems to be enough:

    SwingTerminal terminal = new SwingTerminal(80, 25);
    Screen screen = new Screen(terminal);
    screen.startScreen();
    screen.stopScreen();

As mentioned previously in the thread, it's rather erratic. Sometimes it 
happens immediately, other times it takes several attempts. I'm running Fedora 
18 with stock Gnome shell and Ubuntu 13.04 with Cinnamon (which uses Gnome 3 
under the hood).

This is a minimal example that exposes the issue:

    import com.googlecode.lanterna.terminal.swing.SwingTerminal;
    import com.googlecode.lanterna.screen.Screen;

    class Main {
        public static void main(String[] args) {
            SwingTerminal terminal = new SwingTerminal(80, 25);
            Screen screen = new Screen(terminal);
            screen.startScreen();
            screen.stopScreen();
        }
    }

The following shell script usually triggers it within a minute:

    #!/bin/bash

    while true; do
        java -cp .:lanterna-2.1.5.jar Main
    done

The result is always the same: the program doesn't exit and the window just 
hangs there, empty with white background. It doesn't response to any input and 
the only way to shut it down is to `kill -9` the Java process. There is no 
output on STDOUT or STDERR.

Since it takes some time to trigger the issue (due to the JVM startup time), I 
tried to wrap the `Main` body in an infinite `while` loop.

Then I actually get a stacktrace printed out:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.googlecode.lanterna.terminal.swing.SwingTerminal$FrameResizeListener.componentResized(SwingTerminal.java:445)
    at java.awt.Component.processComponentEvent(Component.java:6331)
    at java.awt.Component.processEvent(Component.java:6285)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Window.processEvent(Window.java:2022)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:702)
    at java.awt.EventQueue$4.run(EventQueue.java:700)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Again, this doesn't happen every time -- more like 1 out of 10 times the 
`while` body is executed. But this time, the program doesn't freeze, it just 
continues with the loop (i.e. the Swing window isn't left hanging).

I wonder if this is the root of the issue somehow getting swallowed by the 
Swing machinery, rendering the process unresponsive. But I know very little 
about how Swing works so I've no idea whether this is useful or misleading.

Original comment by to...@sedovic.cz on 19 Jun 2013 at 12:33

GoogleCodeExporter commented 9 years ago
I've just tried it under XFCE and the issue is there, too.

Original comment by to...@sedovic.cz on 19 Jun 2013 at 5:01

GoogleCodeExporter commented 9 years ago
After looking into this some more (I compiled the latest source) it seems that 
the exception is probably unrelated to the hanging.

Sometimes `frame.getGraphics()` returns `null` at the following line:

https://code.google.com/p/lanterna/source/browse/src/main/java/com/googlecode/la
nterna/terminal/swing/SwingTerminal.java#445

That caused the exception, so I added a check that returns if there's a 
`frame.getGraphics()` is null. That took care of the exception but it didn't 
solve the hanging.

Thanks to Advanced Debugging Techniques (i.e. System.out.println) it seems that 
the hanging always occurs when calling `terminalFrame.setVisible(false)` in 
`SwingTerminal.exitPrivateMode`:

https://code.google.com/p/lanterna/source/browse/src/main/java/com/googlecode/la
nterna/terminal/swing/SwingTerminal.java#221

I tried to look around a bit but I'm really out of depth when it comes to 
Swing. It seems that this tends to occur when you manipulate the JFrame's 
visibility from a thread other than Event-Dispatch.

Calling `javax.swing.SwingUtilities.isEventDispatchThread()` returned `false` 
so that would seem to support the hypothesis. However, the commonly-quoted 
solution (running the setVisible code inside `SwingUtilities.invokeLater(new 
Runnable() { ... })`) didn't work for me. Maybe there's some other offending 
code, or maybe it's something completely different -- I don't know.

Hopefully this helps to at least narrow it down a bit more.

Original comment by to...@sedovic.cz on 19 Jun 2013 at 7:24

GoogleCodeExporter commented 9 years ago
Ah, there could be the AWT-thread ghost in action here...!
Let me try to sample code above again and try...

Original comment by mab...@gmail.com on 24 Jun 2013 at 11:48

GoogleCodeExporter commented 9 years ago
I've deployed a new 2.1.6 snapshot, wrapping a little bit more code in 
SwingUtilities.invokeLater, but I'm not convinced it will be enough. So far I 
haven't been able to reproduce the issue with the code above, I let the script 
run for a good 15 minutes...

What version of Java are you using? What happens if you try to run jstack on 
the process when it's broken? 

Original comment by mab...@gmail.com on 24 Jun 2013 at 12:19

GoogleCodeExporter commented 9 years ago
Using lanterna-2.1.6-20130627.005818-4.jar, I got the hang again.

Here's my java version:
$ java -version
java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-1ubuntu1)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

Running `jstack -l` on the hanging process returns this:

2013-06-27 22:29:54
Full thread dump OpenJDK 64-Bit Server VM (23.7-b01 mixed mode):

"Attach Listener" daemon prio=10 tid=0x00007f647c001000 nid=0x1883 waiting on 
condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"TimerQueue" daemon prio=10 tid=0x00007f6454098800 nid=0x1845 waiting on 
condition [0x00007f64681e6000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000e668b088> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
    at java.util.concurrent.DelayQueue.take(DelayQueue.java:220)
    at javax.swing.TimerQueue.run(TimerQueue.java:171)
    at java.lang.Thread.run(Thread.java:722)

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

"AWT-EventQueue-0" prio=10 tid=0x00007f64ac406000 nid=0x1844 waiting on 
condition [0x00007f64682e5000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000e62b3fb8> (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)
    at sun.awt.SunToolkit.awtLock(SunToolkit.java:238)
    at sun.awt.X11GraphicsDevice.getDoubleBufferVisuals(Native Method)
    at sun.awt.X11GraphicsDevice.makeDefaultConfiguration(X11GraphicsDevice.java:251)
    at sun.awt.X11GraphicsDevice.getDefaultConfiguration(X11GraphicsDevice.java:225)
    - locked <0x00000000e63d92d0> (a java.lang.Object)
    at javax.swing.RepaintManager.getDoubleBufferMaximumSize(RepaintManager.java:1124)
    at javax.swing.RepaintManager.getVolatileOffscreenBuffer(RepaintManager.java:1007)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1428)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:311)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
    at javax.swing.JComponent.paint(JComponent.java:1031)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
    at java.awt.Container.paint(Container.java:1967)
    at java.awt.Window.paint(Window.java:3877)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:807)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
    at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1651)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

   Locked ownable synchronizers:
    - None

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

   Locked ownable synchronizers:
    - None

"AWT-XAWT" daemon prio=10 tid=0x00007f64ac3ff800 nid=0x1842 waiting for monitor 
entry [0x00007f6470160000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at sun.awt.X11GraphicsDevice.getDefaultConfiguration(X11GraphicsDevice.java:225)
    - waiting to lock <0x00000000e63d92d0> (a java.lang.Object)
    at sun.awt.X11.XWindowPeer.checkIfOnNewScreen(XWindowPeer.java:681)
    at sun.awt.X11.XDecoratedPeer.handleConfigureNotifyEvent(XDecoratedPeer.java:758)
    at sun.awt.X11.XBaseWindow.dispatchEvent(XBaseWindow.java:1109)
    at sun.awt.X11.XBaseWindow.dispatchToWindow(XBaseWindow.java:1066)
    at sun.awt.X11.XToolkit.dispatchEvent(XToolkit.java:561)
    at sun.awt.X11.XToolkit.run(XToolkit.java:670)
    at sun.awt.X11.XToolkit.run(XToolkit.java:591)
    at java.lang.Thread.run(Thread.java:722)

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

"Java2D Disposer" daemon prio=10 tid=0x00007f64ac272000 nid=0x1841 in 
Object.wait() [0x00007f6490121000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000e62deb30> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
    - locked <0x00000000e62deb30> (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)

   Locked ownable synchronizers:
    - None

"Service Thread" daemon prio=10 tid=0x00007f64ac110800 nid=0x183f runnable 
[0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread1" daemon prio=10 tid=0x00007f64ac10e000 nid=0x183e waiting 
on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread0" daemon prio=10 tid=0x00007f64ac10b000 nid=0x183d waiting 
on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Signal Dispatcher" daemon prio=10 tid=0x00007f64ac109000 nid=0x183c runnable 
[0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Finalizer" daemon prio=10 tid=0x00007f64ac0b1800 nid=0x183b in Object.wait() 
[0x00007f64935f4000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000e6205728> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
    - locked <0x00000000e6205728> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)

   Locked ownable synchronizers:
    - None

"Reference Handler" daemon prio=10 tid=0x00007f64ac0af800 nid=0x183a in 
Object.wait() [0x00007f64936f5000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000e62052b0> (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 <0x00000000e62052b0> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
    - None

"main" prio=10 tid=0x00007f64ac009000 nid=0x1834 in Object.wait() 
[0x00007f64b2db6000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000e67a8310> (a java.awt.EventQueue$1AWTInvocationLock)
    at java.lang.Object.wait(Object.java:503)
    at java.awt.EventQueue.invokeAndWait(EventQueue.java:1263)
    - locked <0x00000000e67a8310> (a java.awt.EventQueue$1AWTInvocationLock)
    at java.awt.EventQueue.invokeAndWait(EventQueue.java:1244)
    at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1346)
    at com.googlecode.lanterna.terminal.swing.SwingTerminal.exitPrivateMode(SwingTerminal.java:265)
    at com.googlecode.lanterna.screen.Screen.stopScreen(Screen.java:224)
    at Main.repro(repro.java:22)
    at Main.main(repro.java:10)

   Locked ownable synchronizers:
    - None

"VM Thread" prio=10 tid=0x00007f64ac0a7000 nid=0x1839 runnable 

"GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f64ac016800 nid=0x1835 
runnable 

"GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f64ac018800 nid=0x1836 
runnable 

"GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f64ac01a800 nid=0x1837 
runnable 

"GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f64ac01c800 nid=0x1838 
runnable 

"VM Periodic Task Thread" prio=10 tid=0x00007f64ac113000 nid=0x1840 waiting on 
condition 

JNI global references: 325

Found one Java-level deadlock:
=============================
"AWT-EventQueue-0":
  waiting for ownable synchronizer 0x00000000e62b3fb8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "AWT-XAWT"
"AWT-XAWT":
  waiting to lock monitor 0x00007f645402b5e8 (object 0x00000000e63d92d0, a java.lang.Object),
  which is held by "AWT-EventQueue-0"

Java stack information for the threads listed above:
===================================================
"AWT-EventQueue-0":
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000e62b3fb8> (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)
    at sun.awt.SunToolkit.awtLock(SunToolkit.java:238)
    at sun.awt.X11GraphicsDevice.getDoubleBufferVisuals(Native Method)
    at sun.awt.X11GraphicsDevice.makeDefaultConfiguration(X11GraphicsDevice.java:251)
    at sun.awt.X11GraphicsDevice.getDefaultConfiguration(X11GraphicsDevice.java:225)
    - locked <0x00000000e63d92d0> (a java.lang.Object)
    at javax.swing.RepaintManager.getDoubleBufferMaximumSize(RepaintManager.java:1124)
    at javax.swing.RepaintManager.getVolatileOffscreenBuffer(RepaintManager.java:1007)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1428)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:311)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
    at javax.swing.JComponent.paint(JComponent.java:1031)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
    at java.awt.Container.paint(Container.java:1967)
    at java.awt.Window.paint(Window.java:3877)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:807)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
    at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1651)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
"AWT-XAWT":
    at sun.awt.X11GraphicsDevice.getDefaultConfiguration(X11GraphicsDevice.java:225)
    - waiting to lock <0x00000000e63d92d0> (a java.lang.Object)
    at sun.awt.X11.XWindowPeer.checkIfOnNewScreen(XWindowPeer.java:681)
    at sun.awt.X11.XDecoratedPeer.handleConfigureNotifyEvent(XDecoratedPeer.java:758)
    at sun.awt.X11.XBaseWindow.dispatchEvent(XBaseWindow.java:1109)
    at sun.awt.X11.XBaseWindow.dispatchToWindow(XBaseWindow.java:1066)
    at sun.awt.X11.XToolkit.dispatchEvent(XToolkit.java:561)
    at sun.awt.X11.XToolkit.run(XToolkit.java:670)
    at sun.awt.X11.XToolkit.run(XToolkit.java:591)
    at java.lang.Thread.run(Thread.java:722)

Found 1 deadlock.

Original comment by to...@sedovic.cz on 27 Jun 2013 at 8:31

GoogleCodeExporter commented 9 years ago
So there's a deadlock between AWT-XAWT and AWT-EventQueue-0... Googling around 
a bit shows that it seems to have been reported to Oracle, but they too have 
problems reproducing it. 

Just for curiosity's sake, could you try with an Oracle JDK/JRE instead of 
OpenJDK?

Original comment by mab...@gmail.com on 15 Jul 2013 at 11:00

GoogleCodeExporter commented 9 years ago
Sorry for the delay. I've tried the Oracle JDK and it hangs, too.

$ java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

The jstack output looks very similar, I've attached on the off-chance it might 
help.

Original comment by to...@sedovic.cz on 22 Jul 2013 at 5:15

Attachments:

GoogleCodeExporter commented 9 years ago
Once more with the correct attachment...

Original comment by to...@sedovic.cz on 22 Jul 2013 at 5:16

Attachments:

GoogleCodeExporter commented 9 years ago
It's definitely the same issue they are having here: 
https://forums.oracle.com/thread/2244637

There seems to have been a bug report with Sun/Oracle but it seems to have gone 
missing:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7105941

Original comment by mab...@gmail.com on 3 Aug 2013 at 6:05

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
I'm curious if the new SwingTerminal in lanterna 3 fixes this issue... 

Original comment by mab...@gmail.com on 12 Jul 2014 at 2:56