Are you editing one of the POMs to pick up the 2.2.1-SNAPSHOT version of scijava-common?
On Wed, Oct 16, 2013 at 3:45 PM, Barry DeZonia <bdezo...@gmail.com> wrote: > I'm not having any problems building scijava-common master against IJ2 > master. > > > On Wed, Oct 16, 2013 at 2:25 PM, Lee Kamentsky <l...@broadinstitute.org>wrote: > >> I have a very simple fix in scijava-common, but it seems that the head of >> the scijava-common master branch is not going to build with the head of the >> imagej master branch. How should I proceed? I could branch off off >> scijava-common-2.2.0 I suppose. >> >> >> On Wed, Oct 16, 2013 at 2:44 PM, Barry DeZonia <bdezo...@gmail.com>wrote: >> >>> Thanks. I also updated the ticket a bit a few minutes ago. In my second >>> example problem (closing app with sample image open) it looks like the >>> original open samples legacy command was not finishing its run. Not sure if >>> this is related to your event processing changes. >>> >>> >>> On Wed, Oct 16, 2013 at 1:19 PM, Lee Kamentsky >>> <l...@broadinstitute.org>wrote: >>> >>>> Sorry, I missed it. I'll see if I can take a look at it, >>>> >>>> >>>> On Wed, Oct 16, 2013 at 2:15 PM, Barry DeZonia <bdezo...@gmail.com>wrote: >>>> >>>>> Lee did you see I reopened ticket #1992 ( >>>>> http://trac.imagej.net/ticket/1992) that was related to this code >>>>> change? >>>>> >>>>> >>>>> On Mon, Oct 7, 2013 at 10:15 AM, Barry DeZonia <bdezo...@gmail.com>wrote: >>>>> >>>>>> Merged >>>>>> >>>>>> >>>>>> On Mon, Sep 30, 2013 at 2:34 PM, Lee Kamentsky < >>>>>> l...@broadinstitute.org> wrote: >>>>>> >>>>>>> I submitted a patch to scijava-common with the changes. >>>>>>> >>>>>>> https://github.com/scijava/scijava-common/pull/13 >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, Sep 30, 2013 at 3:32 PM, Barry DeZonia >>>>>>> <bdezo...@gmail.com>wrote: >>>>>>> >>>>>>>> A proposed fix would be good Lee. I'd like to test the async status >>>>>>>> update code for responsiveness (i.e. when opening a large image let's >>>>>>>> say). >>>>>>>> Let me know when your fix is in place. Thanks. >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Sep 27, 2013 at 6:54 AM, Lee Kamentsky < >>>>>>>> l...@broadinstitute.org> wrote: >>>>>>>> >>>>>>>>> Thanks Barry, the email was a little rushed - finished it while >>>>>>>>> going out the door. What do you think about sending the status >>>>>>>>> messages >>>>>>>>> asynchronously? It looks to me like the AWT event processing will >>>>>>>>> display >>>>>>>>> them in the order received, so that makes sure that a "Finished" >>>>>>>>> message >>>>>>>>> will be seen after a "% complete" message. Status reporting is such a >>>>>>>>> common thing - it'd be a shame for all the worker threads to stall >>>>>>>>> because >>>>>>>>> a user was using ImageJ to watch a movie of a cat falling off a TV >>>>>>>>> while >>>>>>>>> their batch job was running. >>>>>>>>> >>>>>>>>> I think I'll submit a patch to DefaultStatusService for asynch >>>>>>>>> reporting and maybe Curtis or you could look it over and accept it. >>>>>>>>> If you >>>>>>>>> reject, NP. >>>>>>>>> >>>>>>>>> --Lee >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Sep 26, 2013 at 7:53 PM, Barry DeZonia <bdezo...@gmail.com >>>>>>>>> > wrote: >>>>>>>>> >>>>>>>>>> Hi Lee, >>>>>>>>>> >>>>>>>>>> I added the synchronized keyword yesterday to fix a bug. We can >>>>>>>>>> undo that change. I can work around the problem in another fashion if >>>>>>>>>> necessary. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Sep 26, 2013 at 3:57 PM, Lee Kamentsky < >>>>>>>>>> l...@broadinstitute.org> wrote: >>>>>>>>>> >>>>>>>>>>> Hi all, I'm getting a deadly embrace that happens when the AWT >>>>>>>>>>> event queue thread tries to get a lock within >>>>>>>>>>> DefaultDatasetView.getColor >>>>>>>>>>> and when DefaultStatusService.showStatus on a worker thread tries to >>>>>>>>>>> publish a synchronous request for status display after taking the >>>>>>>>>>> DefaultDatasetView's lock in DefaultDatasetView.rebuild. It happens >>>>>>>>>>> periodically, but it's timing-dependent, so not so reproducible. >>>>>>>>>>> >>>>>>>>>>> The bug is somewhat debatable. Possible candidates: It's a >>>>>>>>>>> little drastic for DefaultDatasetView.getColor to synchronize on >>>>>>>>>>> the view >>>>>>>>>>> itself. Maybe some proxy for the color system could have a >>>>>>>>>>> synchronizing >>>>>>>>>>> object. The other candidate is DefaultEventService.showStatus which >>>>>>>>>>> could >>>>>>>>>>> use EventService.publishLater - I don't think there's much need for >>>>>>>>>>> status >>>>>>>>>>> publishers to wait around for the status to show on the screen. >>>>>>>>>>> >>>>>>>>>>> The two stack traces: >>>>>>>>>>> Thread [AWT-EventQueue-0] (Suspended) >>>>>>>>>>> DefaultDatasetView.getColor(ChannelCollection) line: 261 >>>>>>>>>>> Synchronized >>>>>>>>>>> method on DefaultDatasetView >>>>>>>>>>> FgColorTool(AbstractColorTool).drawIcon() line: 175 >>>>>>>>>>> FgColorTool(AbstractColorTool).onEvent(DisplayActivatedEvent) >>>>>>>>>>> line: 184 >>>>>>>>>>> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) >>>>>>>>>>> line: not available [native method] >>>>>>>>>>> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 >>>>>>>>>>> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 >>>>>>>>>>> Method.invoke(Object, Object...) line: 597 >>>>>>>>>>> DefaultEventService$ProxySubscriber<E>.onEvent(E) line: 282 >>>>>>>>>>> DefaultEventService$ProxySubscriber<E>.onEvent(Object) line: 1 >>>>>>>>>>> DefaultEventBus(ThreadSafeEventService).publish(Object, >>>>>>>>>>> String, Object, List, List, StackTraceElement[]) line: 971 >>>>>>>>>>> DefaultEventBus.access$1(DefaultEventBus, Object, String, >>>>>>>>>>> Object, List, List, StackTraceElement[]) line: 1 >>>>>>>>>>> DefaultEventBus$1.run() line: 201 >>>>>>>>>>> DefaultThreadService.invoke(Runnable) line: 91 >>>>>>>>>>> DefaultEventBus.publishNow(Object, String, Object, List, List, >>>>>>>>>>> StackTraceElement[]) line: 195 >>>>>>>>>>> DefaultEventBus.publishNow(Object) line: 86 >>>>>>>>>>> DefaultEventService.publish(E) line: 95 >>>>>>>>>>> DefaultDisplayService.setActiveDisplay(Display<?>) line: 129 >>>>>>>>>>> DefaultDisplayService.onEvent(WinActivatedEvent) line: 247 >>>>>>>>>>> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) >>>>>>>>>>> line: not available [native method] >>>>>>>>>>> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 >>>>>>>>>>> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 >>>>>>>>>>> Method.invoke(Object, Object...) line: 597 >>>>>>>>>>> DefaultEventService$ProxySubscriber<E>.onEvent(E) line: 282 >>>>>>>>>>> DefaultEventService$ProxySubscriber<E>.onEvent(Object) line: 1 >>>>>>>>>>> DefaultEventBus(ThreadSafeEventService).publish(Object, >>>>>>>>>>> String, Object, List, List, StackTraceElement[]) line: 971 >>>>>>>>>>> DefaultEventBus.access$1(DefaultEventBus, Object, String, >>>>>>>>>>> Object, List, List, StackTraceElement[]) line: 1 >>>>>>>>>>> DefaultEventBus$1.run() line: 201 >>>>>>>>>>> DefaultThreadService.invoke(Runnable) line: 91 >>>>>>>>>>> DefaultEventBus.publishNow(Object, String, Object, List, List, >>>>>>>>>>> StackTraceElement[]) line: 195 >>>>>>>>>>> DefaultEventBus.publishNow(Object) line: 86 >>>>>>>>>>> DefaultEventService.publish(E) line: 95 >>>>>>>>>>> AWTWindowEventDispatcher.windowActivated(WindowEvent) line: 94 >>>>>>>>>>> SwingDisplayWindow(Window).processWindowEvent(WindowEvent) line: >>>>>>>>>>> 1877 >>>>>>>>>>> SwingDisplayWindow(JFrame).processWindowEvent(WindowEvent) >>>>>>>>>>> line: 274 >>>>>>>>>>> SwingDisplayWindow(Window).processEvent(AWTEvent) line: 1823 >>>>>>>>>>> SwingDisplayWindow(Component).dispatchEventImpl(AWTEvent) >>>>>>>>>>> line: 4630 >>>>>>>>>>> SwingDisplayWindow(Container).dispatchEventImpl(AWTEvent) line: >>>>>>>>>>> 2099 >>>>>>>>>>> SwingDisplayWindow(Window).dispatchEventImpl(AWTEvent) line: >>>>>>>>>>> 2478 >>>>>>>>>>> SwingDisplayWindow(Component).dispatchEvent(AWTEvent) line: 4460 >>>>>>>>>>> >>>>>>>>>>> DefaultKeyboardFocusManager(KeyboardFocusManager).redispatchEvent(Component, >>>>>>>>>>> AWTEvent) line: 1850 >>>>>>>>>>> DefaultKeyboardFocusManager.typeAheadAssertions(Component, >>>>>>>>>>> AWTEvent) line: 910 >>>>>>>>>>> DefaultKeyboardFocusManager.dispatchEvent(AWTEvent) line: 409 >>>>>>>>>>> SwingDisplayWindow(Component).dispatchEventImpl(AWTEvent) line: >>>>>>>>>>> 4502 >>>>>>>>>>> SwingDisplayWindow(Container).dispatchEventImpl(AWTEvent) >>>>>>>>>>> line: 2099 >>>>>>>>>>> SwingDisplayWindow(Window).dispatchEventImpl(AWTEvent) line: 2478 >>>>>>>>>>> SwingDisplayWindow(Component).dispatchEvent(AWTEvent) line: >>>>>>>>>>> 4460 >>>>>>>>>>> EventQueue.dispatchEvent(AWTEvent) line: 599 >>>>>>>>>>> >>>>>>>>>>> DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent(SentEvent).dispatch() >>>>>>>>>>> line: 55 >>>>>>>>>>> DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch() >>>>>>>>>>> line: 183 >>>>>>>>>>> DefaultKeyboardFocusManager.sendMessage(Component, AWTEvent) >>>>>>>>>>> line: 210 >>>>>>>>>>> DefaultKeyboardFocusManager.dispatchEvent(AWTEvent) line: 286 >>>>>>>>>>> SwingDisplayWindow(Component).dispatchEventImpl(AWTEvent) >>>>>>>>>>> line: 4502 >>>>>>>>>>> SwingDisplayWindow(Container).dispatchEventImpl(AWTEvent) line: >>>>>>>>>>> 2099 >>>>>>>>>>> SwingDisplayWindow(Window).dispatchEventImpl(AWTEvent) line: >>>>>>>>>>> 2478 >>>>>>>>>>> SwingDisplayWindow(Component).dispatchEvent(AWTEvent) line: 4460 >>>>>>>>>>> EventQueue.dispatchEvent(AWTEvent) line: 599 >>>>>>>>>>> SequencedEvent.dispatch() line: 101 >>>>>>>>>>> EventQueue.dispatchEvent(AWTEvent) line: 597 >>>>>>>>>>> EventDispatchThread.pumpOneEventForFilters(int) line: 269 >>>>>>>>>>> EventDispatchThread.pumpEventsForFilter(int, Conditional, >>>>>>>>>>> EventFilter) line: 184 >>>>>>>>>>> EventDispatchThread.pumpEventsForHierarchy(int, Conditional, >>>>>>>>>>> Component) line: 174 >>>>>>>>>>> EventDispatchThread.pumpEvents(int, Conditional) line: 169 >>>>>>>>>>> EventDispatchThread.pumpEvents(Conditional) line: 161 >>>>>>>>>>> EventDispatchThread.run() line: 122 >>>>>>>>>>> >>>>>>>>>>> Thread [SciJava-4b2922f6-Thread-27] (Suspended) >>>>>>>>>>> Object.wait(long) line: not available [native method] >>>>>>>>>>> EventQueue$1AWTInvocationLock(Object).wait() line: 485 Waiting >>>>>>>>>>> for AWT event thread to read invocation request. >>>>>>>>>>> EventQueue.invokeAndWait(Runnable) line: 993 >>>>>>>>>>> DefaultThreadService.invoke(Runnable) line: 95 >>>>>>>>>>> DefaultEventBus.publishNow(Object, String, Object, List, List, >>>>>>>>>>> StackTraceElement[]) line: 195 >>>>>>>>>>> DefaultEventBus.publishNow(Object) line: 86 >>>>>>>>>>> DefaultEventService.publish(E) line: 95 >>>>>>>>>>> DefaultStatusService.showStatus(int, int, String) line: 77 >>>>>>>>>>> DefaultMinMaxMethod<T>.report() line: 296 >>>>>>>>>>> DefaultMinMaxMethod<T>.process() line: 155 >>>>>>>>>>> DefaultAutoscaleMethod<T>.getRange(IterableInterval<T>) line: >>>>>>>>>>> 70 >>>>>>>>>>> DefaultAutoscaleService.getDefaultIntervalRange(IterableInterval<RealType<?>>) >>>>>>>>>>> line: 97 >>>>>>>>>>> >>>>>>>>>>> DefaultAutoscaleService.getDefaultRandomAccessRange(RandomAccessibleInterval<RealType<?>>) >>>>>>>>>>> line: 105 >>>>>>>>>>> DefaultDatasetView.autoscale(int) line: 176 >>>>>>>>>>> DefaultDatasetView.initializeView(boolean) line: 499 >>>>>>>>>>> DefaultDatasetView.rebuild() line: 383 Takes the >>>>>>>>>>> DefaultDatasetView lock. >>>>>>>>>>> DefaultImageDisplay.rebuild() line: 140 >>>>>>>>>>> DefaultImageDisplay.display(Object) line: 273 >>>>>>>>>>> DefaultOverlayService.addOverlays(ImageDisplay, List<Overlay>) >>>>>>>>>>> line: 148 >>>>>>>>>>> TurboRegRegister.run() line: 144 >>>>>>>>>>> CommandModule.run() line: 196 >>>>>>>>>>> ModuleRunner.run() line: 168 >>>>>>>>>>> ModuleRunner.call() line: 129 >>>>>>>>>>> ModuleRunner.call() line: 1 >>>>>>>>>>> FutureTask$Sync.innerRun() line: 303 >>>>>>>>>>> FutureTask<V>.run() line: 138 >>>>>>>>>>> ThreadPoolExecutor$Worker.runTask(Runnable) line: 886 >>>>>>>>>>> ThreadPoolExecutor$Worker.run() line: 908 >>>>>>>>>>> Thread.run() line: 662 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> ImageJ-devel mailing list >>>>>>>>>>> ImageJ-devel@imagej.net >>>>>>>>>>> http://imagej.net/mailman/listinfo/imagej-devel >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
_______________________________________________ ImageJ-devel mailing list ImageJ-devel@imagej.net http://imagej.net/mailman/listinfo/imagej-devel