Skip to content

ImageJ hangs when displaying two Img input widgets #278

Description

@imagejan

To reproduce:

  • Start ImageJ (e.g. up-to-date Fiji, with scijava-common-2.64.0)
  • Open two images (e.g. the Blobs sample image twice: Shift+B, Shift+B)
  • Open the script editor ([)
  • Paste and run the following Groovy script:
    #@ Img in1
    #@ Img in2
    
    println 42
  • For the second input, try to switch to the second image.

ImageJ will get unresponsive and hang in a loop at high CPU load. This is an excerpt from the stack trace recorded on Windows 7:

"SciJava-738d4226-Thread-4786" #4831 prio=6 os_prio=0 tid=0x0000001970bb5800 nid
=0x24b4c in Object.wait() [0x0000001a769ff000]
   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:1315)
        - locked <0x00000000909bdb18> (a java.awt.EventQueue$1AWTInvocationLock)

        at java.awt.EventQueue.invokeAndWait(EventQueue.java:1296)
        at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:117)
        at org.scijava.ui.AbstractUIInputWidget.refreshWidget(AbstractUIInputWidget.java:82)
        at org.scijava.widget.AbstractInputPanel.refresh(AbstractInputPanel.java:89)
        at org.scijava.widget.DefaultWidgetModel$1.run(DefaultWidgetModel.java:177)
        at org.scijava.thread.DefaultThreadService$2.run(DefaultThreadService.java:220)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)

"SciJava-738d4226-Thread-4785" #4830 prio=6 os_prio=0 tid=0x0000001970bb5000 nid
=0x6c04 in Object.wait() [0x0000001a767ff000]
   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:1315)
        - locked <0x0000000091d2e3f8> (a java.awt.EventQueue$1AWTInvocationLock)

        at java.awt.EventQueue.invokeAndWait(EventQueue.java:1296)
        at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:117)
        at org.scijava.ui.AbstractUIInputWidget.refreshWidget(AbstractUIInputWidget.java:82)
        at org.scijava.widget.AbstractInputPanel.refresh(AbstractInputPanel.java:89)
        at org.scijava.widget.DefaultWidgetModel$1.run(DefaultWidgetModel.java:177)
        at org.scijava.thread.DefaultThreadService$2.run(DefaultThreadService.java:220)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)

"SciJava-738d4226-Thread-4784" #4829 prio=6 os_prio=0 tid=0x0000001970bb4000 nid
=0x243f4 in Object.wait() [0x0000001a765ff000]
   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:1315)
        - locked <0x000000008e1e22a0> (a java.awt.EventQueue$1AWTInvocationLock)

        at java.awt.EventQueue.invokeAndWait(EventQueue.java:1296)
        at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:117)
        at org.scijava.ui.AbstractUIInputWidget.refreshWidget(AbstractUIInputWidget.java:82)
        at org.scijava.widget.AbstractInputPanel.refresh(AbstractInputPanel.java:89)
        at org.scijava.widget.DefaultWidgetModel$1.run(DefaultWidgetModel.java:177)
        at org.scijava.thread.DefaultThreadService$2.run(DefaultThreadService.java:220)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)

"SciJava-738d4226-Thread-4783" #4828 prio=6 os_prio=0 tid=0x0000001970bb3800 nid
=0x212dc in Object.wait() [0x0000001a763ff000]
   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:1315)
        - locked <0x000000008e3ac4d8> (a java.awt.EventQueue$1AWTInvocationLock)

        at java.awt.EventQueue.invokeAndWait(EventQueue.java:1296)
        at org.scijava.thread.DefaultThreadService.invoke(DefaultThreadService.java:117)
        at org.scijava.ui.AbstractUIInputWidget.refreshWidget(AbstractUIInputWidget.java:82)
        at org.scijava.widget.AbstractInputPanel.refresh(AbstractInputPanel.java:89)
        at org.scijava.widget.DefaultWidgetModel$1.run(DefaultWidgetModel.java:177)
        at org.scijava.thread.DefaultThreadService$2.run(DefaultThreadService.java:220)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)

"SciJava-738d4226-Thread-4782" #4827 prio=6 os_prio=0 tid=0x0000001970bb2800 nid
=0x25c24

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions