scenerygraphics / sciview

sciview is a tool for visualization and interaction with ND image and mesh data
BSD 2-Clause "Simplified" License
64 stars 17 forks source link

sciview hangs on shutdown from Main.kt #538

Closed ctrueden closed 2 months ago

ctrueden commented 11 months ago

Recipe to reproduce:

The message "Was running as sciview standalone, shutting down JVM" is logged to the console, but the program does not shut down.

Relevant stack trace portion:

"AWT-EventQueue-0" #26 prio=6 os_prio=0 cpu=1759.00ms elapsed=31.85s tid=0x00007fe4358e6000 nid=0xdfb7 in Object.wait()  [0x00007fe354c4a000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(java.base@11.0.19/Native Method)
    - waiting on <0x000000063d584540> (a java.lang.Thread)
    at java.lang.Thread.join(java.base@11.0.19/Thread.java:1300)
    - waiting to re-lock in wait() <0x000000063d584540> (a java.lang.Thread)
    at java.lang.Thread.join(java.base@11.0.19/Thread.java:1375)
    at java.lang.ApplicationShutdownHooks.runHooks(java.base@11.0.19/ApplicationShutdownHooks.java:107)
    at java.lang.ApplicationShutdownHooks$1.run(java.base@11.0.19/ApplicationShutdownHooks.java:46)
    at java.lang.Shutdown.runHooks(java.base@11.0.19/Shutdown.java:130)
    at java.lang.Shutdown.exit(java.base@11.0.19/Shutdown.java:174)
    - locked <0x00000007bfc18000> (a java.lang.Class for java.lang.Shutdown)
    at java.lang.Runtime.exit(java.base@11.0.19/Runtime.java:116)
    at java.lang.System.exit(java.base@11.0.19/System.java:1752)
    at sc.iview.SciView.dispose(SciView.kt:1224)
    at sc.iview.ui.SwingMainWindow.close(SwingMainWindow.kt:399)
    at sc.iview.ui.SwingMainWindow$initializer$1$4.windowClosing(SwingMainWindow.kt:236)
    at java.awt.AWTEventMulticaster.windowClosing(java.desktop@11.0.19/AWTEventMulticaster.java:357)
    at java.awt.AWTEventMulticaster.windowClosing(java.desktop@11.0.19/AWTEventMulticaster.java:357)
    at java.awt.AWTEventMulticaster.windowClosing(java.desktop@11.0.19/AWTEventMulticaster.java:357)
    at java.awt.Window.processWindowEvent(java.desktop@11.0.19/Window.java:2078)
    at javax.swing.JFrame.processWindowEvent(java.desktop@11.0.19/JFrame.java:298)
    at java.awt.Window.processEvent(java.desktop@11.0.19/Window.java:2037)
    at java.awt.Component.dispatchEventImpl(java.desktop@11.0.19/Component.java:5011)
    at java.awt.Container.dispatchEventImpl(java.desktop@11.0.19/Container.java:2321)
    at java.awt.Window.dispatchEventImpl(java.desktop@11.0.19/Window.java:2772)
    at java.awt.Component.dispatchEvent(java.desktop@11.0.19/Component.java:4843)
    at java.awt.EventQueue.dispatchEventImpl(java.desktop@11.0.19/EventQueue.java:772)
    at java.awt.EventQueue$4.run(java.desktop@11.0.19/EventQueue.java:721)
    at java.awt.EventQueue$4.run(java.desktop@11.0.19/EventQueue.java:715)
    at java.security.AccessController.doPrivileged(java.base@11.0.19/Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base@11.0.19/ProtectionDomain.java:85)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base@11.0.19/ProtectionDomain.java:95)
    at java.awt.EventQueue$5.run(java.desktop@11.0.19/EventQueue.java:745)
    at java.awt.EventQueue$5.run(java.desktop@11.0.19/EventQueue.java:743)
    at java.security.AccessController.doPrivileged(java.base@11.0.19/Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(java.base@11.0.19/ProtectionDomain.java:85)
    at java.awt.EventQueue.dispatchEvent(java.desktop@11.0.19/EventQueue.java:742)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(java.desktop@11.0.19/EventDispatchThread.java:203)
    at java.awt.EventDispatchThread.pumpEventsForFilter(java.desktop@11.0.19/EventDispatchThread.java:124)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(java.desktop@11.0.19/EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(java.desktop@11.0.19/EventDispatchThread.java:109)
    at java.awt.EventDispatchThread.pumpEvents(java.desktop@11.0.19/EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.run(java.desktop@11.0.19/EventDispatchThread.java:90)

"Thread-1" #35 prio=5 os_prio=0 cpu=0.13ms elapsed=19.98s tid=0x00007fe324953800 nid=0xdfff in Object.wait()  [0x00007fe354b4e000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(java.base@11.0.19/Native Method)
    - waiting on <0x0000000638a00a28> (a java.awt.EventQueue$1AWTInvocationLock)
    at java.lang.Object.wait(java.base@11.0.19/Object.java:328)
    at java.awt.EventQueue.invokeAndWait(java.desktop@11.0.19/EventQueue.java:1361)
    - waiting to re-lock in wait() <0x0000000638a00a28> (a java.awt.EventQueue$1AWTInvocationLock)
    at java.awt.Window.doDispose(java.desktop@11.0.19/Window.java:1227)
    at java.awt.Window.dispose(java.desktop@11.0.19/Window.java:1164)
    at org.scijava.ui.swing.AbstractSwingUI.dispose(AbstractSwingUI.java:242)
    at org.scijava.ui.DefaultUIService.dispose(DefaultUIService.java:373)
    - locked <0x000000063dc2e660> (a org.scijava.ui.DefaultUIService)
    at org.scijava.Context.doDispose(Context.java:597)
    - locked <0x000000061073ad80> (a org.scijava.Context)
    at org.scijava.Context.lambda$new$0(Context.java:295)
    at org.scijava.Context$$Lambda$307/0x000000084040ac40.run(Unknown Source)
    at java.lang.Thread.run(java.base@11.0.19/Thread.java:829)

So similar to #536, it's some kind of SciJava event dispatch hang.

xulman commented 11 months ago

confirm this, happens as described on my Linux too

xulman commented 11 months ago

tried also with disabled/unset XMODIFIERS (I know it's supposedly irrelevant) without any visible effect

xulman commented 11 months ago

(*) sometimes the graphics canvas is white/grayish and does not show the grid until I click and drag into it (simply make it render something)

ctrueden commented 11 months ago

About the graphics canvas being white/grayish—I also have this same (painting?) glitch, but didn't file a dedicated issue for it yet.