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

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



Back to the top