I froze fiji hard - (by changing metadata for imglib2 img wrapped as an ImagePlus)

I changed image properties for a virtual stack (in a nasty way, accidentally, i think). Got error 1 below.
Then, when trying to quit fiji, get error 2 below, and Fiji doesn’t quit.

I can’t change the image properties or look at them, because I get this:
image

…weird. May be safe to ignore if I can’t reproduce, but posting here as a record.

John

Error 1

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at net.imglib2.img.display.imagej.AbstractVirtualStack.update(AbstractVirtualStack.java:279)
	at ij.ImagePlus.getStack(ImagePlus.java:1490)
	at ij.Menus.updateMenus(Menus.java:1206)
	at ij.WindowManager.setCurrentWindow(WindowManager.java:50)
	at ij.gui.ImageWindow.windowActivated(ImageWindow.java:567)
	at java.awt.AWTEventMulticaster.windowActivated(AWTEventMulticaster.java:389)
	at java.awt.Window.processWindowEvent(Window.java:2066)
	at java.awt.Window.processEvent(Window.java:2013)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1024)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:516)
	at java.awt.Component.dispatchEventImpl(Component.java:4760)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	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.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.SentEvent.dispatch(SentEvent.java:70)
	at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:239)
	at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:266)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:388)
	at java.awt.Component.dispatchEventImpl(Component.java:4760)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	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.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.SequencedEvent.dispatch(SequencedEvent.java:128)
	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.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	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)

Error 2

Exception in thread "Quit" java.lang.NullPointerException
	at net.imglib2.img.display.imagej.AbstractVirtualStack.update(AbstractVirtualStack.java:279)
	at ij.ImagePlus.getStack(ImagePlus.java:1490)
	at ij.gui.ImageWindow.close(ImageWindow.java:391)
	at ij.gui.StackWindow.close(StackWindow.java:192)
	at ij.WindowManager.closeAllWindows(WindowManager.java:413)
	at ij.ImageJ.run(ImageJ.java:820)
	at java.lang.Thread.run(Thread.java:748)
4 Likes

You can reproduce the above behavior with this groovy script:

import net.imglib2.*;
import net.imglib2.util.*;
import net.imglib2.type.numeric.real.*;
import net.imglib2.img.display.imagej.ImageJFunctions;

img = ConstantUtils.constantRandomAccessibleInterval( new FloatType(), 3, new FinalInterval( 64, 32, 16 ) );
ip = ImageJFunctions.wrap( img,"img" );
ip.show()

Then:

  1. opening image properties for the resulting image
  2. changing channels to slices
  3. pressing ok
  4. observe Error 1
  5. try to quit fiji
  6. observe Error 2
2 Likes

Can confirm on my machine.

1 Like