I am running ImageJ 1.52e. I am using a modified version of the EPICS AD
Viewer plugin and some plugins developed in-house, notably one for image assembly. Running the image assembly plugin when it is standalone works. However, if I acquire an image with the AD Viewer plugin, then assemble that image, ImageJ hangs on open Brightness/Contrast, and it has to use kill -9 to stop ImageJ. I can run other plugins with the AD Viewer plugin without difficulty. I can release all the source code, although reproducing the system uses custom hardware so reproducing the problem may be tricky. Thank you, Iain. -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Iain,
You could try generating a thread dump to find out what's causing the hang. See: https://imagej.net/Troubleshooting#If_ImageJ_freezes_or_hangs Regards, Curtis -- Curtis Rueden LOCI software architect - https://loci.wisc.edu/software ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden On Mon, Aug 13, 2018 at 10:31 AM, Iain Marcuson <[hidden email]> wrote: > I am running ImageJ 1.52e. I am using a modified version of the EPICS AD > Viewer plugin and some plugins developed in-house, notably one for image > assembly. Running the image assembly plugin when it is standalone works. > However, if I acquire an image with the AD Viewer plugin, then assemble > that image, ImageJ hangs on open Brightness/Contrast, and it has to use > kill -9 to stop ImageJ. I can run other plugins with the AD Viewer plugin > without difficulty. I can release all the source code, although > reproducing the system uses custom hardware so reproducing the problem may > be tricky. > > Thank you, > > Iain. > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
^\2018-08-13 10:32:02
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode): "ContrastAdjuster" #33 prio=4 os_prio=0 tid=0x00007f900452a800 nid=0x1121 in Object.wait() [0x00007f902037c000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c18e0798> (a ij.plugin.frame.ContrastAdjuster) at java.lang.Object.wait(Object.java:502) at ij.plugin.frame.ContrastAdjuster.run(ContrastAdjuster.java:1051) - locked <0x00000000c18e0798> (a ij.plugin.frame.ContrastAdjuster) at java.lang.Thread.run(Thread.java:745) "com.cosylab.epics.caj.util.Timer" #27 prio=5 os_prio=0 tid=0x00007f903c15c800 nid=0x110c in Object.wait() [0x00007f902067d000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c6dbf890> (a com.cosylab.epics.caj.util.Timer) at com.cosylab.epics.caj.util.Timer.nextTask(Timer.java:237) - locked <0x00000000c6dbf890> (a com.cosylab.epics.caj.util.Timer) at com.cosylab.epics.caj.util.Timer$RunLoop.run(Timer.java:273) at java.lang.Thread.run(Thread.java:745) "pool-1-thread-5" #26 prio=5 os_prio=0 tid=0x00007f903c134800 nid=0x110b waiting on condition [0x00007f902079e000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000c6f6f760> (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:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) "pool-1-thread-4" #25 prio=5 os_prio=0 tid=0x00007f903c112800 nid=0x110a waiting on condition [0x00007f902089f000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000c6f6f760> (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:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) "pool-1-thread-3" #24 prio=5 os_prio=0 tid=0x00007f903c111800 nid=0x1109 runnable [0x00007f90209a0000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) - locked <0x00000000c7058728> (a sun.nio.ch.Util$3) - locked <0x00000000c7058710> (a java.util.Collections$UnmodifiableSet) - locked <0x00000000c6e33db0> (a sun.nio.ch.EPollSelectorImpl) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:101) at com.cosylab.epics.caj.impl.reactor.Reactor.processInternal(Reactor.java:348) at com.cosylab.epics.caj.impl.reactor.Reactor.process(Reactor.java:284) at com.cosylab.epics.caj.impl.reactor.lf.LeaderFollowersHandler.run(LeaderFollowersHandler.java:91) 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:745) "pool-1-thread-2" #23 prio=5 os_prio=0 tid=0x00007f903c10f000 nid=0x1108 waiting on condition [0x00007f9020aa1000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000c6f6f760> (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:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) "pool-1-thread-1" #22 prio=5 os_prio=0 tid=0x00007f903c10e800 nid=0x1107 waiting on condition [0x00007f9020ba2000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000c6f6f760> (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:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) "TimerQueue" #20 daemon prio=5 os_prio=0 tid=0x00007f900437c000 nid=0x1106 waiting on condition [0x00007f9020ee5000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000c7059940> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at java.util.concurrent.DelayQueue.take(DelayQueue.java:223) at javax.swing.TimerQueue.run(TimerQueue.java:174) at java.lang.Thread.run(Thread.java:745) "DestroyJavaVM" #19 prio=5 os_prio=0 tid=0x0000000001399800 nid=0x10f1 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Run$_StartupRunner" #18 prio=5 os_prio=0 tid=0x00000000017a2000 nid=0x1105 in Object.wait() [0x00007f90211e6000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at EPICS_AD_Viewer.run(EPICS_AD_Viewer.java:161) - locked <0x00000000c6ebe790> (a EPICS_AD_Viewer) at ij.IJ.runUserPlugIn(IJ.java:228) at ij.IJ.runUserPlugIn(IJ.java:241) at ij.IJ.runPlugIn(IJ.java:192) at ij.Executer.runCommand(Executer.java:137) at ij.Executer.run(Executer.java:66) at ij.IJ.run(IJ.java:308) at ij.IJ.run(IJ.java:283) at ij.macro.Functions.doRun(Functions.java:615) at ij.macro.Functions.doFunction(Functions.java:96) at ij.macro.Interpreter.doStatement(Interpreter.java:249) at ij.macro.Interpreter.doBlock(Interpreter.java:635) at ij.macro.Interpreter.runMacro(Interpreter.java:158) at ij.macro.MacroRunner.run(MacroRunner.java:152) at ij.macro.MacroRunner.run(MacroRunner.java:125) at ij.plugin.MacroInstaller.autoRun(MacroInstaller.java:527) at ij.macro.StartupRunner.run(StartupRunner.java:25) at java.lang.Thread.run(Thread.java:745) "AWT-EventQueue-0" #16 prio=6 os_prio=0 tid=0x000000000175b000 nid=0x1104 runnable [0x00007f9021ba3000] java.lang.Thread.State: RUNNABLE at sun.java2d.xr.XRDrawLine.clipCoordinates(XRDrawLine.java:320) at sun.java2d.xr.XRDrawLine.rasterizeLine(XRDrawLine.java:71) at sun.java2d.xr.XRRenderer.drawLine(XRRenderer.java:94) at sun.java2d.SunGraphics2D.drawLine(SunGraphics2D.java:2234) at ij.plugin.frame.ContrastPlot.paint(ContrastAdjuster.java:1278) at sun.awt.RepaintArea.paintComponent(RepaintArea.java:264) at sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:64) at sun.awt.RepaintArea.paint(RepaintArea.java:240) at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:584) at java.awt.Component.dispatchEventImpl(Component.java:4965) at java.awt.Component.dispatchEvent(Component.java:4711) 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:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 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) "AWT-Shutdown" #17 prio=5 os_prio=0 tid=0x000000000175a000 nid=0x1103 in Object.wait() [0x00007f9021ca6000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c6ce80d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:502) at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295) - locked <0x00000000c6ce80d0> (a java.lang.Object) at java.lang.Thread.run(Thread.java:745) "AWT-XAWT" #15 daemon prio=6 os_prio=0 tid=0x0000000001692000 nid=0x1102 waiting on condition [0x00007f9021fa6000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000c6d2a3e0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199) at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209) at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285) at sun.awt.SunToolkit.awtLock(SunToolkit.java:253) at sun.awt.X11.XToolkit.waitForEvents(Native Method) at sun.awt.X11.XToolkit.run(XToolkit.java:568) at sun.awt.X11.XToolkit.run(XToolkit.java:532) at java.lang.Thread.run(Thread.java:745) "Java2D Disposer" #13 daemon prio=10 os_prio=0 tid=0x000000000167d800 nid=0x1101 in Object.wait() [0x00007f90220a8000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c6da96a0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) - locked <0x00000000c6da96a0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at sun.java2d.Disposer.run(Disposer.java:148) at java.lang.Thread.run(Thread.java:745) "GC Daemon" #12 daemon prio=2 os_prio=0 tid=0x0000000001630000 nid=0x1100 in Object.wait() [0x00007f9022638000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c6c85a48> (a sun.misc.GC$LatencyLock) at sun.misc.GC$Daemon.run(GC.java:117) - locked <0x00000000c6c85a48> (a sun.misc.GC$LatencyLock) "RMI Reaper" #11 prio=5 os_prio=0 tid=0x000000000162a800 nid=0x10ff in Object.wait() [0x00007f9022739000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c6c82068> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) - locked <0x00000000c6c82068> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:351) at java.lang.Thread.run(Thread.java:745) "RMI TCP Accept-0" #10 daemon prio=5 os_prio=0 tid=0x0000000001629000 nid=0x10fe runnable [0x00007f902283a000] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409) at java.net.ServerSocket.implAccept(ServerSocket.java:545) at java.net.ServerSocket.accept(ServerSocket.java:513) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:400) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:372) at java.lang.Thread.run(Thread.java:745) "Service Thread" #8 daemon prio=9 os_prio=0 tid=0x00000000014c0800 nid=0x10fc runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C1 CompilerThread1" #7 daemon prio=9 os_prio=0 tid=0x0000000001470800 nid=0x10fb waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread0" #6 daemon prio=9 os_prio=0 tid=0x000000000146e800 nid=0x10fa waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" #5 daemon prio=9 os_prio=0 tid=0x000000000146c800 nid=0x10f9 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Surrogate Locker Thread (Concurrent GC)" #4 daemon prio=9 os_prio=0 tid=0x000000000146b000 nid=0x10f8 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Finalizer" #3 daemon prio=8 os_prio=0 tid=0x0000000001438800 nid=0x10f7 in Object.wait() [0x00007f9028318000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c6b37fe0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) - locked <0x00000000c6b37fe0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209) "Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x0000000001434000 nid=0x10f6 in Object.wait() [0x00007f9028419000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000c6b36588> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:502) at java.lang.ref.Reference.tryHandlePending(Reference.java:191) - locked <0x00000000c6b36588> (a java.lang.ref.Reference$Lock) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153) "VM Thread" os_prio=0 tid=0x000000000142c800 nid=0x10f5 runnable "Gang worker#0 (Parallel GC Threads)" os_prio=0 tid=0x0000000001374800 nid=0x10f3 runnable "Concurrent Mark-Sweep GC Thread" os_prio=0 tid=0x00000000013b7800 nid=0x10f4 runnable "VM Periodic Task Thread" os_prio=0 tid=0x00000000014c3800 nid=0x10fd waiting on condition JNI global references: 495 Heap par new generation total 19136K, used 2838K [0x00000000c1800000, 0x00000000c2cc0000, 0x00000000c6b30000) eden space 17024K, 7% used [0x00000000c1800000, 0x00000000c1943be0, 0x00000000c28a0000) from space 2112K, 73% used [0x00000000c28a0000, 0x00000000c2a21cb8, 0x00000000c2ab0000) to space 2112K, 0% used [0x00000000c2ab0000, 0x00000000c2ab0000, 0x00000000c2cc0000) concurrent mark-sweep generation total 131500K, used 78899K [0x00000000c6b30000, 0x00000000ceb9b000, 0x0000000100000000) Metaspace used 19763K, capacity 20100K, committed 20352K, reserved 1067008K class space used 2216K, capacity 2326K, committed 2432K, reserved 1048576K On Mon, Aug 13, 2018 at 12:31 PM, Curtis Rueden < [hidden email]> wrote: > Hi Iain, > > You could try generating a thread dump to find out what's causing the hang. > See: > > https://imagej.net/Troubleshooting#If_ImageJ_freezes_or_hangs > > Regards, > Curtis > > -- > Curtis Rueden > LOCI software architect - https://loci.wisc.edu/software > ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden > > > On Mon, Aug 13, 2018 at 10:31 AM, Iain Marcuson <[hidden email]> > wrote: > > > I am running ImageJ 1.52e. I am using a modified version of the EPICS AD > > Viewer plugin and some plugins developed in-house, notably one for image > > assembly. Running the image assembly plugin when it is standalone works. > > However, if I acquire an image with the AD Viewer plugin, then assemble > > that image, ImageJ hangs on open Brightness/Contrast, and it has to use > > kill -9 to stop ImageJ. I can run other plugins with the AD Viewer > plugin > > without difficulty. I can release all the source code, although > > reproducing the system uses custom hardware so reproducing the problem > may > > be tricky. > > > > Thank you, > > > > Iain. > > > > -- > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > > > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
I have done some further testing. I can reproduce the error with the EPICS
plugin, so the problem does not lie there. I have put debugging prints in much of the ContrastAdjuster code, and the seem to indicate the code completes. I can provide data and source code that demonstrates the problem, if needed. -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |