flimlib / flimj-ui

FLIMJ: fluorescence lifetime image analysis plugin for ImageJ
https://flimlib.github.io/#imagej
GNU General Public License v3.0
4 stars 1 forks source link

UI freezes when exporting lifetime image on M1 Mac #28

Open Yang-J-LIN opened 2 years ago

Yang-J-LIN commented 2 years ago

When I try to export the lifetime image, the UI freezes without giving any error information.

I am using the latest version of FIJI (MacOS x86_64), where zulu8.60.0.21-ca-fx-jdk8.0.322-macosx_x64 is bundled.

ctrueden commented 2 years ago

@Yang-J-LIN Ah, that is unfortunate. Have you seen the relevant troubleshooting instructions? https://imagej.net/learn/troubleshooting#if-imagej-freezes-or-hangs

In particular, try shift+\ from the main Fiji window to see if you can capture a thread dump. Then we will at least learn where it's hanging, if not why.

Yang-J-LIN commented 2 years ago

@ctrueden Hi, thanks for the quick reply. The easy way does not work. So I tried the "fallback" way. Here is the message after I pressed "export":

[DEBUG] Selected 'net.imagej.ops.Ops$Create$Img' op: net.imagej.ops.create.img.CreateImgFromII [DEBUG] Selected 'net.imagej.ops.Ops$Create$Img/net.imagej.ops.special.function.UnaryFunctionOp' op: net.imagej.ops.create.img.CreateImgFromDimsAndType [DEBUG] Selected 'net.imagej.ops.Ops$Create$ImgFactory' op: net.imagej.ops.create.imgFactory.DefaultCreateImgFactory [DEBUG] Selected 'net.imagej.ops.copy.CopyRAI' op: net.imagej.ops.copy.CopyRAI [DEBUG] Selected 'net.imagej.ops.Ops$Copy$Type/net.imagej.ops.special.computer.UnaryComputerOp' op: net.imagej.ops.copy.CopyType [DEBUG] Selected 'net.imagej.ops.Ops$Map/net.imagej.ops.special.computer.UnaryComputerOp' op: net.imagej.ops.map.MapUnaryComputers$IIToRAIParallel [DEBUG] Selected 'net.imagej.ops.Ops$Create$Img/net.imagej.ops.special.function.UnaryFunctionOp' op: net.imagej.ops.create.img.CreateImgFromDimsAndType [DEBUG] Selected 'net.imagej.ops.Ops$Create$ImgFactory' op: net.imagej.ops.create.imgFactory.DefaultCreateImgFactory [DEBUG] Selected 'net.imagej.ops.thread.chunker.ChunkerOp' op: net.imagej.ops.thread.chunker.DefaultChunker [DEBUG] Selected 'net.imagej.ops.Ops$Stats$Max' op: net.imagej.ops.stats.IterableMax [DEBUG] publish( context = org.scijava.Context@1eac852e consumed = false object = ,null,null), called from non-EDT Thread:null [DEBUG] publish( context = org.scijava.Context@1eac852e consumed = false items[0] = ,null,null), called from non-EDT Thread:null [DEBUG] publish( context = org.scijava.Context@1eac852e consumed = false view = net.imagej.display.DefaultDatasetView@84fc3ea,null,null), called from non-EDT Thread:null [DEBUG] publish( context = org.scijava.Context@1eac852e consumed = false object = Intensity,null,null), called from non-EDT Thread:null [DEBUG] publish( context = org.scijava.Context@1eac852e consumed = false items[0] = Intensity,null,null), called from non-EDT Thread:null [DEBUG] publish( context = org.scijava.Context@1eac852e consumed = false display = Intensity,null,null), called from non-EDT Thread:null

Btw, there is also a warning message when I open the FlimJ, I do not know whether it will affect this:

Apr 21, 2022 8:32:22 PM javafx.fxml.FXMLLoader$ValueElement processValue WARNING: Loading FXML document with JavaFX API of version 11.0.1 by JavaFX runtime of version 8.0.322 Apr 21, 2022 8:32:22 PM javafx.fxml.FXMLLoader$ValueElement processValue WARNING: Loading FXML document with JavaFX API of version 11.0.1 by JavaFX runtime of version 8.0.322 Apr 21, 2022 8:32:22 PM javafx.fxml.FXMLLoader$ValueElement processValue WARNING: Loading FXML document with JavaFX API of version 11.0.1 by JavaFX runtime of version 8.0.322 Apr 21, 2022 8:32:23 PM javafx.fxml.FXMLLoader$ValueElement processValue WARNING: Loading FXML document with JavaFX API of version 11.0.1 by JavaFX runtime of version 8.0.322 Apr 21, 2022 8:32:23 PM javafx.fxml.FXMLLoader$ValueElement processValue WARNING: Loading FXML document with JavaFX API of version 11.0.1 by JavaFX runtime of version 8.0.322 Apr 21, 2022 8:32:23 PM javafx.fxml.FXMLLoader$ValueElement processValue WARNING: Loading FXML document with JavaFX API of version 11.0.1 by JavaFX runtime of version 8.0.322

ctrueden commented 2 years ago

@Yang-J-LIN So with your terminal open and in focus, pressing ctrl+\ (or Ctrl+Pause on Windows) did not print a thread dump? I am not seeing such a thing in the output you included. Normally it would look something like this:

^\2022-04-21 15:32:13
Full thread dump OpenJDK 64-Bit Server VM (25.322-b06 mixed mode):

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

"MarlinRenderer Disposer" #25 daemon prio=10 os_prio=31 tid=0x00007f78b562c000 nid=0x10f3b in Object.wait() [0x000070000ab76000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
... lots of lines cut here for brevity ...

JNI global references: 4493

Heap
 PSYoungGen      total 228352K, used 194972K [0x0000000714100000, 0x000000072c180000, 0x00000007c0000000)
  eden space 202752K, 96% used [0x0000000714100000,0x000000071ff67200,0x0000000720700000)
  from space 25600K, 0% used [0x0000000720700000,0x0000000720700000,0x0000000722000000)
  to   space 29184K, 0% used [0x000000072a500000,0x000000072a500000,0x000000072c180000)
 ParOldGen       total 154624K, used 19024K [0x00000005bc200000, 0x00000005c5900000, 0x0000000714100000)
  object space 154624K, 12% used [0x00000005bc200000,0x00000005bd494118,0x00000005c5900000)
 Metaspace       used 53006K, capacity 54335K, committed 54656K, reserved 1095680K
  class space    used 7273K, capacity 7752K, committed 7808K, reserved 1048576K

The most important bits will be any paragraphs with flimlib.flimj in one or more lines.

ctrueden commented 2 years ago

Anyway, I am guessing this problem is related to #25. It's only on macOS, and I think it's something to do with the version of JavaFX included with the Zulu 8 JDK+FX. I vaguely recall we observed this problem before when testing, maybe with the JBRSDK8 as well, which is frustrating. It may be that updating to OpenJDK 11 fixes the issue, but that might necessitate some code changes here to update the JavaFX usage from 8 to 11, as well as introducing dependencies on the now-external JavaFX11 libraries.

I wish I had time to test on my system, since I do also run macOS, and am likely to be able to reproduce these issues, but I am really swamped with I2K workshop preparation at the moment. One other thing to try in the short term might be running Fiji with a different version of Java, perhaps Oracle Java 8 since it includes a copy of JavaFX 8.

Yang-J-LIN commented 2 years ago

@ctrueden Sorry I forget to ctrl + \. I tried to use Oracle Java 8 but it did not work either. I do not know whether it is Mac's problem or the M1 chip's problem.

This is what it prints:

Thread dump ``` ^\2022-04-22 15:39:56 Full thread dump OpenJDK 64-Bit Server VM (25.322-b06 mixed mode): "PulseTimer-CVDisplayLink thread" #61 daemon prio=5 os_prio=31 tid=0x00007f80c845c000 nid=0x1a763 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Prism Font Disposer" #60 daemon prio=10 os_prio=31 tid=0x00007f80e8aee800 nid=0x196d3 in Object.wait() [0x00000003108c7000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144) - locked <0x000000035bf50e50> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165) at com.sun.javafx.font.Disposer.run(Disposer.java:93) at java.lang.Thread.run(Thread.java:750) "Thread-7" #58 daemon prio=5 os_prio=31 tid=0x00007f80e8af5800 nid=0x1a527 in Object.wait() [0x00000003107c4000] 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.sun.glass.ui.InvokeLaterDispatcher.run(InvokeLaterDispatcher.java:126) - locked <0x000000035c140710> (a java.lang.StringBuilder) "QuantumRenderer-0" #56 daemon prio=5 os_prio=31 tid=0x00007f8140465800 nid=0x1a973 waiting on condition [0x00000003106c1000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x000000035bfba3a8> (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:2044) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-24" #55 prio=5 os_prio=31 tid=0x00007f80ef89b000 nid=0x25403 waiting on condition [0x0000000311d03000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-23" #54 prio=5 os_prio=31 tid=0x00007f80e8ae5000 nid=0x25603 waiting on condition [0x0000000311c00000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-22" #53 prio=5 os_prio=31 tid=0x00007f80e8ae4800 nid=0x25ea3 waiting on condition [0x0000000311afd000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-21" #52 prio=5 os_prio=31 tid=0x00007f81407d6000 nid=0x1b203 waiting on condition [0x00000003119fa000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-20" #51 prio=5 os_prio=31 tid=0x00007f80c83e4800 nid=0x1b103 waiting on condition [0x00000003118f7000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-19" #50 prio=5 os_prio=31 tid=0x00007f813fad1800 nid=0x1af03 waiting on condition [0x00000003117f4000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-18" #49 prio=5 os_prio=31 tid=0x00007f80e8143000 nid=0x25c03 waiting on condition [0x00000003116f1000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-17" #48 prio=5 os_prio=31 tid=0x00007f813fad0800 nid=0x1ab83 waiting on condition [0x00000003115ee000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-16" #47 prio=5 os_prio=31 tid=0x00007f80ef89a800 nid=0x26003 waiting on condition [0x00000003114eb000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-15" #46 prio=5 os_prio=31 tid=0x00007f8109009800 nid=0x2746f waiting on condition [0x00000003113e8000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-14" #45 prio=5 os_prio=31 tid=0x00007f80d83a0000 nid=0x26403 waiting on condition [0x00000003112e5000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-13" #44 prio=5 os_prio=31 tid=0x00007f80e8ae3800 nid=0x26803 waiting on condition [0x00000003111e2000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-12" #43 prio=5 os_prio=31 tid=0x00007f810f8b5800 nid=0x26b03 waiting on condition [0x00000003110df000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-1" #32 prio=5 os_prio=31 tid=0x00007f80e8f6a800 nid=0x291fb waiting on condition [0x0000000310433000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "zSelector" #30 prio=4 os_prio=31 tid=0x00007f813f98d800 nid=0x27a03 in Object.wait() [0x00000003105be000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at ij.gui.StackWindow.run(StackWindow.java:240) - locked <0x0000000348dac2a8> (a ij.gui.StackWindow) at java.lang.Thread.run(Thread.java:750) "DestroyJavaVM" #26 prio=5 os_prio=31 tid=0x00007f814000d000 nid=0x1007 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "MarlinRenderer Disposer" #25 daemon prio=10 os_prio=31 tid=0x00007f813fc9b800 nid=0xe627 in Object.wait() [0x000000030fe9e000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000003492128e8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144) - locked <0x00000003492128e8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165) at sun.java2d.marlin.OffHeapArray$OffHeapDisposer.run(OffHeapArray.java:154) at java.lang.Thread.run(Thread.java:750) "SciJava-5569a6f9-Thread-0" #20 prio=5 os_prio=31 tid=0x00007f8141d8a800 nid=0xff4b waiting on condition [0x000000031022d000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341f907b8> (a java.util.concurrent.SynchronousQueue$TransferStack) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) "Timer-0" #18 daemon prio=5 os_prio=31 tid=0x00007f80e820f800 nid=0x101ef in Object.wait() [0x000000031012a000] 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 <0x0000000341e12658> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505) "TimerQueue" #17 daemon prio=5 os_prio=31 tid=0x00007f81403be000 nid=0x10a07 waiting on condition [0x000000030ffa1000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000341e01d30> (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:2044) at java.util.concurrent.DelayQueue.take(DelayQueue.java:211) at javax.swing.TimerQueue.run(TimerQueue.java:174) at java.lang.Thread.run(Thread.java:750) "AWT-EventQueue-0" #15 prio=6 os_prio=31 tid=0x00007f8140123000 nid=0xd97b runnable [0x000000030fc8b000] java.lang.Thread.State: RUNNABLE at sun.awt.CGraphicsDevice.nativeGetScreenInsets(Native Method) at sun.awt.CGraphicsDevice.getScreenInsets(CGraphicsDevice.java:128) at sun.lwawt.macosx.LWCToolkit.getScreenInsets(LWCToolkit.java:407) at java.awt.Window.init(Window.java:506) at java.awt.Window.(Window.java:537) at java.awt.Frame.(Frame.java:420) at ij.gui.ImageWindow.(ImageWindow.java:70) at ij.gui.ImageWindow.(ImageWindow.java:66) at ij.ImagePlus.show(ImagePlus.java:507) at ij.ImagePlus.show(ImagePlus.java:479) at net.imagej.legacy.display.LegacyImageDisplayViewer.view(LegacyImageDisplayViewer.java:141) at net.imagej.legacy.display.LegacyImageDisplayViewer.view(LegacyImageDisplayViewer.java:107) at net.imagej.legacy.ui.LegacyUI$1.run(LegacyUI.java:195) at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:111) at net.imagej.legacy.ui.LegacyUI.show(LegacyUI.java:191) at org.scijava.ui.DefaultUIService.onEvent(DefaultUIService.java:379) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.scijava.event.DefaultEventService$ProxySubscriber.onEvent(DefaultEventService.java:298) at org.scijava.event.DefaultEventService$ProxySubscriber.onEvent(DefaultEventService.java:272) at org.bushe.swing.event.ThreadSafeEventService.publish(ThreadSafeEventService.java:971) at org.scijava.event.DefaultEventBus.access$101(DefaultEventBus.java:54) at org.scijava.event.DefaultEventBus$1.run(DefaultEventBus.java:188) at org.scijava.thread.DefaultThreadService.lambda$wrap$1(DefaultThreadService.java:211) at org.scijava.thread.DefaultThreadService$$Lambda$38/1629353699.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) 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) "Java2D Disposer" #13 daemon prio=10 os_prio=31 tid=0x00007f810f810000 nid=0xd333 in Object.wait() [0x000000030fa87000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144) - locked <0x0000000341e30100> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165) at sun.java2d.Disposer.run(Disposer.java:148) at java.lang.Thread.run(Thread.java:750) "Java2D Queue Flusher" #12 daemon prio=10 os_prio=31 tid=0x00007f813fa3b800 nid=0x1317f in Object.wait() [0x000000030f984000] 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 <0x0000000341e28a50> (a sun.java2d.opengl.OGLRenderQueue$QueueFlusher) "AWT-Shutdown" #11 prio=5 os_prio=31 tid=0x00007f81418ba800 nid=0x7f0b in Object.wait() [0x000000030f7fe000] 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 <0x0000000341e28d50> (a java.lang.Object) at java.lang.Thread.run(Thread.java:750) "JavaFX Application Thread" #10 daemon prio=5 os_prio=31 tid=0x00007f814189d800 nid=0x103 in Object.wait() [0x000000030e11e000] 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.awt.EventQueue.invokeAndWait(EventQueue.java:1343) - locked <0x00000006500f4708> (a java.awt.EventQueue$1AWTInvocationLock) at java.awt.EventQueue.invokeAndWait(EventQueue.java:1324) at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:115) at org.scijava.event.DefaultEventBus.publishNow(DefaultEventBus.java:182) at org.scijava.event.DefaultEventBus.publishNow(DefaultEventBus.java:73) at org.scijava.event.DefaultEventService.publish(DefaultEventService.java:102) at org.scijava.display.DefaultDisplayService.createDisplay(DefaultDisplayService.java:213) at org.scijava.ui.AbstractUserInterface.show(AbstractUserInterface.java:98) at org.scijava.ui.DefaultUIService.show(DefaultUIService.java:241) at flimlib.flimj.ui.controller.ExportCtrl.lambda$initialize$2(ExportCtrl.java:83) at flimlib.flimj.ui.controller.ExportCtrl$$Lambda$353/163044220.handle(Unknown Source) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) at javafx.event.Event.fireEvent(Event.java:198) at javafx.scene.Node.fireEvent(Node.java:8411) at javafx.scene.control.Button.fire(Button.java:185) at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182) at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96) at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89) at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) at javafx.event.Event.fireEvent(Event.java:198) at javafx.scene.Scene$MouseHandler.process(Scene.java:3760) at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3488) at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1765) at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2497) at com.sun.javafx.tk.quantum.EmbeddedScene.lambda$null$4(EmbeddedScene.java:256) at com.sun.javafx.tk.quantum.EmbeddedScene$$Lambda$716/1425391600.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.tk.quantum.EmbeddedScene.lambda$mouseEvent$5(EmbeddedScene.java:244) at com.sun.javafx.tk.quantum.EmbeddedScene$$Lambda$715/1569727940.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295) at com.sun.javafx.application.PlatformImpl$$Lambda$207/499488267.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294) at com.sun.javafx.application.PlatformImpl$$Lambda$204/1853132266.run(Unknown Source) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) "Service Thread" #9 daemon prio=9 os_prio=31 tid=0x00007f814008f800 nid=0xa203 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C1 CompilerThread3" #8 daemon prio=9 os_prio=31 tid=0x00007f814185f000 nid=0x5803 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread2" #7 daemon prio=9 os_prio=31 tid=0x00007f814185e800 nid=0xa803 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread1" #6 daemon prio=9 os_prio=31 tid=0x00007f813f814000 nid=0xa903 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread0" #5 daemon prio=9 os_prio=31 tid=0x00007f814002e800 nid=0x5503 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" #4 daemon prio=9 os_prio=31 tid=0x00007f814000e800 nid=0x3b03 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Finalizer" #3 daemon prio=8 os_prio=31 tid=0x00007f813f811800 nid=0x331b in Object.wait() [0x000000030edc9000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144) - locked <0x0000000341e30438> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216) "Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x00007f8141859800 nid=0x4427 in Object.wait() [0x000000030ecc6000] 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.tryHandlePending(Reference.java:191) - locked <0x0000000341e12820> (a java.lang.ref.Reference$Lock) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153) "VM Thread" os_prio=31 tid=0x00007f8141854800 nid=0x3103 runnable "ParGC Thread#0" os_prio=31 tid=0x00007f814180f000 nid=0x520f runnable "ParGC Thread#1" os_prio=31 tid=0x00007f814180f800 nid=0x2c03 runnable "ParGC Thread#2" os_prio=31 tid=0x00007f8141810800 nid=0x4f03 runnable "ParGC Thread#3" os_prio=31 tid=0x00007f8141811000 nid=0x4d03 runnable "ParGC Thread#4" os_prio=31 tid=0x00007f8141812000 nid=0x2d03 runnable "ParGC Thread#5" os_prio=31 tid=0x00007f8141812800 nid=0x4b03 runnable "ParGC Thread#6" os_prio=31 tid=0x00007f8141813800 nid=0x2f03 runnable "ParGC Thread#7" os_prio=31 tid=0x00007f8141814000 nid=0x3003 runnable "ParGC Thread#8" os_prio=31 tid=0x00007f8141815000 nid=0x4703 runnable "VM Periodic Task Thread" os_prio=31 tid=0x00007f8140090000 nid=0xa103 waiting on condition JNI global references: 6565 Heap PSYoungGen total 740864K, used 269258K [0x0000000640a00000, 0x000000069e380000, 0x00000007c0000000) eden space 642048K, 40% used [0x0000000640a00000,0x000000065099a850,0x0000000667d00000) from space 98816K, 7% used [0x0000000667d00000,0x0000000668458288,0x000000066dd80000) to space 270336K, 0% used [0x000000068db80000,0x000000068db80000,0x000000069e380000) ParOldGen total 1129472K, used 517678K [0x0000000341e00000, 0x0000000386d00000, 0x0000000640a00000) object space 1129472K, 45% used [0x0000000341e00000,0x000000036178b880,0x0000000386d00000) Metaspace used 79601K, capacity 82869K, committed 83072K, reserved 1120256K class space used 12266K, capacity 13115K, committed 13184K, reserved 1048576K ```
ctrueden commented 2 years ago

Thanks @Yang-J-LIN, that is very helpful!

Technically speaking, the problem is here:

"JavaFX Application Thread" #10 daemon prio=5 os_prio=31 tid=0x00007f814189d800 nid=0x103 in Object.wait() [0x000000030e11e000]
   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.awt.EventQueue.invokeAndWait(EventQueue.java:1343)
    - locked <0x00000006500f4708> (a java.awt.EventQueue$1AWTInvocationLock)
    at java.awt.EventQueue.invokeAndWait(EventQueue.java:1324)
    at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:115)
    at org.scijava.event.DefaultEventBus.publishNow(DefaultEventBus.java:182)
    at org.scijava.event.DefaultEventBus.publishNow(DefaultEventBus.java:73)
    at org.scijava.event.DefaultEventService.publish(DefaultEventService.java:102)
    at org.scijava.display.DefaultDisplayService.createDisplay(DefaultDisplayService.java:213)
    at org.scijava.ui.AbstractUserInterface.show(AbstractUserInterface.java:98)
    at org.scijava.ui.DefaultUIService.show(DefaultUIService.java:241)
    at flimlib.flimj.ui.controller.ExportCtrl.lambda$initialize$2(ExportCtrl.java:83)
    at flimlib.flimj.ui.controller.ExportCtrl$$Lambda$353/163044220.handle(Unknown Source)

"AWT-EventQueue-0" #15 prio=6 os_prio=31 tid=0x00007f8140123000 nid=0xd97b runnable [0x000000030fc8b000]
   java.lang.Thread.State: RUNNABLE
    at sun.awt.CGraphicsDevice.nativeGetScreenInsets(Native Method)
    at sun.awt.CGraphicsDevice.getScreenInsets(CGraphicsDevice.java:128)
    at sun.lwawt.macosx.LWCToolkit.getScreenInsets(LWCToolkit.java:407)
    at java.awt.Window.init(Window.java:506)
    at java.awt.Window.<init>(Window.java:537)
    at java.awt.Frame.<init>(Frame.java:420)
    at ij.gui.ImageWindow.<init>(ImageWindow.java:70)
    at ij.gui.ImageWindow.<init>(ImageWindow.java:66)
    at ij.ImagePlus.show(ImagePlus.java:507)
    at ij.ImagePlus.show(ImagePlus.java:479)
    at net.imagej.legacy.display.LegacyImageDisplayViewer.view(LegacyImageDisplayViewer.java:141)
    at net.imagej.legacy.display.LegacyImageDisplayViewer.view(LegacyImageDisplayViewer.java:107)
    at net.imagej.legacy.ui.LegacyUI$1.run(LegacyUI.java:195)
    at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:111)
    at net.imagej.legacy.ui.LegacyUI.show(LegacyUI.java:191)
    at org.scijava.ui.DefaultUIService.onEvent(DefaultUIService.java:379)

Or in a nutshell: sun.awt.CGraphicsDevice.nativeGetScreenInsets hangs the Java GUI subsystem.

I do believe we encountered this problem before with the JetBrains JBRSDK, and there is a bug in their bug tracker about it which has since been fixed. It is unfortunate that the Zulu JDK also suffers from this issue. I did find one other report of this problem with OpenJDK 13 (not sure which flavor), but no answer on that thread about how to fix it.

So, for the moment my advice is still to try with Oracle Java 8. I'd also like to update FLIMJ to JavaFX 11 so that we can test with Zulu 11, 17, and/or 18, but I don't have time right now, unfortunately.