Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [egit-dev] Deadlock / Blocking UI during Computing Differences

Maybe it only happens for a certain file type. Different file types can use different comparators (e.g. Java vs. Text). Try figure that out when it happens again.


Dani



From:        Lars Vogel <lars.vogel@xxxxxxxxxxx>
To:        Daniel Megert <daniel_megert@xxxxxxxxxx>
Cc:        EGit developer discussion <egit-dev@xxxxxxxxxxx>, egit-dev-bounces@xxxxxxxxxxx, Thomas Wolf <thomas.wolf@xxxxxxxxxx>
Date:        08.10.2018 18:41
Subject:        Re: [egit-dev] Deadlock / Blocking UI during Computing Differences




Hi Dani,

IMHO it is almost impossible to give reproducible steps so unless the
EGit colleagues can see something in the stack trace which points to a
possible solution I do not plan to open a bug.

Best regards, Lars
On Mon, Oct 8, 2018 at 6:32 PM Daniel Megert <daniel_megert@xxxxxxxxxx> wrote:
>
> What's the bug number?
>
> Dani
>
>
>
> From:        Lars Vogel <lars.vogel@xxxxxxxxxxx>
> To:        Thomas Wolf <thomas.wolf@xxxxxxxxxx>
> Cc:        EGit developer discussion <egit-dev@xxxxxxxxxxx>
> Date:        08.10.2018 17:48
> Subject:        Re: [egit-dev] Deadlock / Blocking UI during Computing Differences
> Sent by:        egit-dev-bounces@xxxxxxxxxxx
> ________________________________
>
>
>
> Hi,
>
> finally, I manage to get a stack trace of the blocked main thread. I
> opened another modul dialog and can't close my dialogs anymore. See
> screenshot.
>
> It looks like the blocked main thread is triggered by Egit via the at
> org.eclipse.egit.ui.internal.merge.GitMergeEditorInput.contentsCreated(GitMergeEditorInput.java:259)
> call.
>
> This is with a very fresh EGit installation and a platform I-build
> from yesterday.
>
> Best regards, Lars
>
>
>
> "main" #1 prio=6 os_prio=0 tid=0x00007f024400b800 nid=0x5b9a runnable
> [0x00007f024c60e000]
>   java.lang.Thread.State: RUNNABLE
>    at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
>    at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1576)
>    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4411)
>    at org.eclipse.jface.window.Window.runEventLoop(Window.java:821)
>    at org.eclipse.jface.window.Window.open(Window.java:797)
>    at org.eclipse.ui.internal.views.log.EventDetailsDialog.open(EventDetailsDialog.java:191)
>    at org.eclipse.ui.internal.views.log.EventDetailsDialogAction.run(EventDetailsDialogAction.java:102)
>    at org.eclipse.ui.internal.views.log.LogView.lambda$2(LogView.java:565)
>    at org.eclipse.ui.internal.views.log.LogView$$Lambda$593/966718271.doubleClick(Unknown
> Source)
>    at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:833)
>    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
>    at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:47)
>    at org.eclipse.ui.internal.JFaceUtil$$Lambda$9/344080246.run(Unknown Source)
>    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:176)
>    at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:830)
>    at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1518)
>    at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1260)
>    at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:252)
>    at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:250)
>    at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309)
>    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
>    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5604)
>    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1382)
>    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4872)
>    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4413)
>    at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:168)
>    at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
>    at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:474)
>    at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:240)
>    at org.eclipse.ui.internal.progress.ProgressManager.lambda$24(ProgressManager.java:802)
>    at org.eclipse.ui.internal.progress.ProgressManager$$Lambda$688/2107575540.run(Unknown
> Source)
>    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
>    at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:835)
>    at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:811)
>    at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:971)
>    at org.eclipse.compare.internal.CompareContainer.run(CompareContainer.java:90)
>    at org.eclipse.compare.CompareEditorInput.run(CompareEditorInput.java:1309)
>    at org.eclipse.compare.internal.merge.DocumentMerger.doDiff(DocumentMerger.java:401)
>    at org.eclipse.compare.contentmergeviewer.TextMergeViewer.doDiff(TextMergeViewer.java:3453)
>    at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:5294)
>    at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateContent(TextMergeViewer.java:2966)
>    at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.internalRefresh(ContentMergeViewer.java:784)
>    at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.inputChanged(ContentMergeViewer.java:692)
>    at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:289)
>    at org.eclipse.compare.CompareViewerSwitchingPane.setInput(CompareViewerSwitchingPane.java:268)
>    at org.eclipse.compare.internal.CompareContentViewerSwitchingPane.setInput(CompareContentViewerSwitchingPane.java:183)
>    at org.eclipse.compare.CompareEditorInput.internalSetContentPaneInput(CompareEditorInput.java:798)
>    at org.eclipse.compare.CompareEditorInput.lambda$8(CompareEditorInput.java:746)
>    at org.eclipse.compare.CompareEditorInput$$Lambda$1427/1459096037.run(Unknown
> Source)
>    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
>    at org.eclipse.compare.CompareEditorInput.feed1(CompareEditorInput.java:734)
>    at org.eclipse.compare.CompareEditorInput.lambda$4(CompareEditorInput.java:632)
>    at org.eclipse.compare.CompareEditorInput$$Lambda$1418/82418483.open(Unknown
> Source)
>    at org.eclipse.compare.CompareViewerPane.open(CompareViewerPane.java:312)
>    at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:853)
>    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
>    at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:47)
>    at org.eclipse.ui.internal.JFaceUtil$$Lambda$9/344080246.run(Unknown Source)
>    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:176)
>    at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:850)
>    at org.eclipse.compare.structuremergeviewer.DiffTreeViewer.internalOpen(DiffTreeViewer.java:689)
>    at org.eclipse.compare.structuremergeviewer.DiffTreeViewer.access$3(DiffTreeViewer.java:686)
>    at org.eclipse.compare.structuremergeviewer.DiffTreeViewer$1.openSelectedChange(DiffTreeViewer.java:224)
>    at org.eclipse.compare.internal.CompareEditorInputNavigator.openElement(CompareEditorInputNavigator.java:99)
>    at org.eclipse.compare.internal.CompareEditorInputNavigator.selectChange(CompareEditorInputNavigator.java:68)
>    at org.eclipse.egit.ui.internal.merge.GitMergeEditorInput.contentsCreated(GitMergeEditorInput.java:259)
>    at org.eclipse.compare.CompareEditorInput.createContents(CompareEditorInput.java:561)
>    at org.eclipse.compare.internal.CompareEditor.createCompareControl(CompareEditor.java:444)
>    at org.eclipse.compare.internal.CompareEditor.createPartControl(CompareEditor.java:396)
>    at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:156)
>    at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:102)
>    at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:367)
>    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.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
>    at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:1001)
>    at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:966)
>    at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:139)
>    at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:411)
>    at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:333)
>    at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:193)
>    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:108)
>    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:77)
>    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:59)
>    at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:132)
>    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:1015)
>    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:675)
>    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:781)
>    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:752)
>    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:746)
>    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
>    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:730)
>    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$1.handleEvent(PartServiceImpl.java:107)
>    at org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(UIEventHandler.java:38)
>    at org.eclipse.e4.ui.services.internal.events.UIEventHandler$$Lambda$80/857240709.run(Unknown
> Source)
>    at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
>    at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:147)
>    at org.eclipse.swt.widgets.Display.syncExec(Display.java:5748)
>    at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:215)
>    at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
>    at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:204)
>    at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:199)
>    at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
>    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:233)
>    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
>    at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:138)
>    at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:81)
>    at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:42)
>    at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55)
>    at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63)
>    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424)
>    at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:177)
>    at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:637)
>    at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:601)
>    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:791)
>    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:404)
>    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1241)
>    at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3298)
>    at org.eclipse.ui.internal.WorkbenchPage.lambda$9(WorkbenchPage.java:3197)
>    at org.eclipse.ui.internal.WorkbenchPage$$Lambda$1415/942765793.run(Unknown
> Source)
>    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
>    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3194)
>    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3158)
>    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3148)
>    at org.eclipse.compare.internal.CompareUIPlugin.lambda$0(CompareUIPlugin.java:561)
>    at org.eclipse.compare.internal.CompareUIPlugin$$Lambda$1414/2018306763.run(Unknown
> Source)
>    at org.eclipse.compare.internal.CompareUIPlugin.syncExec(CompareUIPlugin.java:1394)
>    at org.eclipse.compare.internal.CompareUIPlugin.internalOpenEditor(CompareUIPlugin.java:571)
>    at org.eclipse.compare.internal.CompareUIPlugin.openCompareEditor(CompareUIPlugin.java:535)
>    at org.eclipse.compare.CompareUI.openCompareEditorOnPage(CompareUI.java:171)
>    at org.eclipse.compare.CompareUI.openCompareEditor(CompareUI.java:140)
>    at org.eclipse.compare.CompareUI.openCompareEditor(CompareUI.java:124)
>    at org.eclipse.egit.ui.internal.rebase.RebaseResultDialog.buttonPressed(RebaseResultDialog.java:592)
>    at org.eclipse.jface.dialogs.Dialog.lambda$0(Dialog.java:622)
>    at org.eclipse.jface.dialogs.Dialog$$Lambda$685/390180783.accept(Unknown
> Source)
>    at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
>    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
>    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
>    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5604)
>    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1382)
>    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4872)
>    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4413)
>    at org.eclipse.jface.window.Window.runEventLoop(Window.java:821)
>    at org.eclipse.jface.window.Window.open(Window.java:797)
>    at org.eclipse.egit.ui.internal.rebase.RebaseResultDialog.lambda$1(RebaseResultDialog.java:140)
>    at org.eclipse.egit.ui.internal.rebase.RebaseResultDialog$$Lambda$1411/268482643.run(Unknown
> Source)
>    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
>    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
>    - locked <0x00000000dd92d808> (a org.eclipse.swt.widgets.RunnableLock)
>    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4847)
>    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4416)
>    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1173)
>    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
>    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062)
>    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
>    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:636)
>    at org.eclipse.ui.internal.Workbench$$Lambda$28/2061337484.run(Unknown
> Source)
>    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
>    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563)
>    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:151)
>    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155)
>    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:199)
>    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
>    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
>    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:391)
>    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:246)
>    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.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
>    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:595)
>    at org.eclipse.equinox.launcher.Main.run(Main.java:1501)
>    at org.eclipse.equinox.launcher.Main.main(Main.java:1474)
> On Mon, Jan 16, 2017 at 11:59 AM Thomas Wolf <thomas.wolf@xxxxxxxxxx> wrote:
> >
> >
> > On Jan 16, 2017, at 10:39, Lars Vogel <lars.vogel@xxxxxxxxxxx> wrote:
> >
> > > sometimes (not always) I see a Computing Differences in the Status
> > > line during Git operations. This frequently leads to a popup "Finding
> > > differences" and block / deadlocks my IDE. See screenshot.
> > >
> > > Is this a EGit dialog? If yes, could you avoid the dialog?
> >
> > “Finding differences” is not an EGit dialog, it comes from the compare framework.
> >
> > Which dialog appears first? The push result of EGit, or the “finding differences”?
> >
> > What EGit version are you using? EGit 4.5 and 4.6 shouldn’t pop up that result dialog at all (it must be opened explicitly via the progress view, or via the small icon bottom right). Which was done precisely to avoid this UI deadlock.
> >
> > Now for 4.7 we’ve just re-instatiated popping up the result dialog, but only once there are no modal shells (like that “finding differences”) around. There’s a preference to choose the behavior. See
https://git.eclipse.org/r/#/c/88222/.
> >
> > If the deadlock occurs when the result dialog is visible and _then_ “finding differences” pops up, something is wrong in the compare framework. If it’s the other way around (“finding differences” comes up first, then the EGit result dialog), then try using the latest nightly build of EGit.
> >
> > Cheers,
> >
> >   Thomas
> > _______________________________________________
> > egit-dev mailing list
> > egit-dev@xxxxxxxxxxx
> > To change your delivery options, retrieve your password, or unsubscribe from this list, visit
> >
https://dev.eclipse.org/mailman/listinfo/egit-dev
>
>
>
> --
> Eclipse Platform project co-lead
> CEO vogella GmbH
>
> Haindaalwisch 17a, 22395 Hamburg
> Amtsgericht Hamburg: HRB 127058
> Geschäftsführer: Lars Vogel, Jennifer Nerlich de Vogel
> USt-IdNr.: DE284122352
> Fax (040) 5247 6322, Email: lars.vogel@xxxxxxxxxxx, Web:
http://www.vogella.com
> [attachment "Selection_695.png" deleted by Daniel Megert/Zurich/IBM] _______________________________________________
> egit-dev mailing list
> egit-dev@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
>
https://dev.eclipse.org/mailman/listinfo/egit-dev
>
>


--
Eclipse Platform project co-lead
CEO vogella GmbH

Haindaalwisch 17a, 22395 Hamburg
Amtsgericht Hamburg: HRB 127058
Geschäftsführer: Lars Vogel, Jennifer Nerlich de Vogel
USt-IdNr.: DE284122352
Fax (040) 5247 6322, Email: lars.vogel@xxxxxxxxxxx, Web:
http://www.vogella.com





Back to the top