Community
Participate
Working Groups
I opened a diff view from the git staging view. In that Java diff I start editing code. After saving the file I get the following NPE. I don't know if there are any other pre-conditions on what should be edited or how often should be saved. I had the exceptions a couple of times, even after reopening the editor. After closing all editors I cannot re-trigger it though. java.lang.NullPointerException at org.eclipse.compare.internal.merge.DocumentMerger.doDiff(DocumentMerger.java:451) at org.eclipse.compare.contentmergeviewer.TextMergeViewer.doDiff(TextMergeViewer.java:3510) at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:5364) at org.eclipse.compare.contentmergeviewer.TextMergeViewer$16.runInUIThread(TextMergeViewer.java:2402) at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:95) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4001) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3629) at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:166) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:368) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:468) at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:228) at org.eclipse.ui.internal.progress.ProgressManager.lambda$26(ProgressManager.java:821) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74) at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:854) at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:830) at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:988) at org.eclipse.compare.internal.Utilities.executeRunnable(Utilities.java:948) at org.eclipse.compare.internal.CompareContainer.run(CompareContainer.java:70) at org.eclipse.compare.CompareEditorInput.run(CompareEditorInput.java:1317) at org.eclipse.compare.internal.merge.DocumentMerger.doDiff(DocumentMerger.java:417) at org.eclipse.compare.contentmergeviewer.TextMergeViewer.doDiff(TextMergeViewer.java:3510) at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:5364) at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateContent(TextMergeViewer.java:3023) at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.internalRefresh(ContentMergeViewer.java:793) at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.refresh(ContentMergeViewer.java:769) at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.handleCompareInputChange(ContentMergeViewer.java:1388) at org.eclipse.compare.contentmergeviewer.TextMergeViewer.handleCompareInputChange(TextMergeViewer.java:5325) at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.lambda$1(ContentMergeViewer.java:390) at org.eclipse.team.ui.synchronize.SaveableCompareEditorInput$1.run(SaveableCompareEditorInput.java:386) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.team.ui.synchronize.SaveableCompareEditorInput.propogateInputChange(SaveableCompareEditorInput.java:383) at org.eclipse.team.ui.synchronize.SaveableCompareEditorInput.lambda$0(SaveableCompareEditorInput.java:223) at org.eclipse.compare.structuremergeviewer.DiffNode.fireChange(DiffNode.java:140) at org.eclipse.egit.ui.internal.revision.NotifiableDiffNode.fireChange(NotifiableDiffNode.java:28) at org.eclipse.egit.ui.internal.revision.GitCompareFileRevisionEditorInput.fireInputChange(GitCompareFileRevisionEditorInput.java:410) at org.eclipse.egit.ui.internal.revision.GitCompareFileRevisionEditorInput$InternalResourceSaveableComparison.fireInputChange(GitCompareFileRevisionEditorInput.java:582) at org.eclipse.team.internal.ui.synchronize.LocalResourceSaveableComparison.performSave(LocalResourceSaveableComparison.java:154) at org.eclipse.egit.ui.internal.revision.GitCompareFileRevisionEditorInput$InternalResourceSaveableComparison.doSave(GitCompareFileRevisionEditorInput.java:660) at org.eclipse.ui.Saveable.doSave(Saveable.java:213) at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:333) at org.eclipse.ui.internal.SaveableHelper.lambda$1(SaveableHelper.java:196) at org.eclipse.ui.internal.SaveableHelper.lambda$3(SaveableHelper.java:271) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:436) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352) at org.eclipse.ui.internal.WorkbenchWindow.lambda$7(WorkbenchWindow.java:2347) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2345) at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:278) at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:260) at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:207) at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:150) at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3820) at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3833) at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:81) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283) at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97) at jdk.internal.reflect.GeneratedMethodAccessor309.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:319) at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:253) at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173) at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487) at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:584) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1268) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1036) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1046) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1088) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1084) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1513) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4884) at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:345) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4762) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4930) at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3624) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590) at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
Could be related to some egit. We need exact steps to reproduce.
which version of eclipse, jgit, egit were used here ?
I was just about to thank Rolf for *not* reporting this against EGit. Unlikely that this is an EGit problem. This is a strange stack trace. The TextMergeViewer is doing a diff because you saved, but from an earlier setFocus() it has still an UI job to do the diff and then tries to diff again even though a diff is already ongoing. Moreover, I don't see how there can be an NPE at DocumentMerger:451. (Could happen only if the array 'e' was null, but how could that happen?) TextMergeViewer has some logic with a fRedoDiff flag that is set to true if one side becomes non-dirty. Looks like that is not always right? It shouldn't try to do an update while an update was already in progress.
I don't have exact steps to reproduce, the problem disappeared for me as well after some consistent triggering. I was editing a file with some merge conflicts. I agree with the analysis of Thomas, seems very odd issue. For completeness, EGit/JGit version: 5.10.2012080955-r
(In reply to Rolf Theunissen from comment #4) > I don't have exact steps to reproduce, the problem disappeared for me as > well after some consistent triggering. I was editing a file with some merge > conflicts. > > I agree with the analysis of Thomas, seems very odd issue. > > For completeness, EGit/JGit version: 5.10.2012080955-r this version does not exist, I guess you mean 5.10.0.202012080955-r
Moving back to Platform/Compare.
*** Bug 571506 has been marked as a duplicate of this bug. ***
See also earlier reports: bug 241107, bug 304693, bug 304941, bug 313017, bug 338541, bug 428074, bug 468726.
*** Bug 304941 has been marked as a duplicate of this bug. ***