Bug 313017 - NPE in DocumentMerger.doDiff
Summary: NPE in DocumentMerger.doDiff
Status: CLOSED WONTFIX
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Compare (show other bugs)
Version: 3.6   Edit
Hardware: PC All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Platform-Compare-Inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords:
Depends on: 304693
Blocks:
  Show dependency tree
 
Reported: 2010-05-15 12:15 EDT by James Blackburn CLA
Modified: 2020-01-17 05:24 EST (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description James Blackburn CLA 2010-05-15 12:15:53 EDT
Using 3.6M7 I synchronized a project shared with CVS, looked at a diff, then updated the project in the synchronize view.  A NPE then occurred with a dialog brought to focus:


java.lang.NullPointerException
	at org.eclipse.compare.internal.merge.DocumentMerger.doDiff(DocumentMerger.java:462)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.doDiff(TextMergeViewer.java:3275)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:4982)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer$2.runInUIThread(TextMergeViewer.java:1046)
	at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
Comment 1 James Blackburn CLA 2010-05-15 12:16:53 EDT
Another exception logged at the same time:

org.eclipse.swt.SWTException: Graphic is disposed
	at org.eclipse.swt.SWT.error(SWT.java:4083)
	at org.eclipse.swt.SWT.error(SWT.java:3998)
	at org.eclipse.swt.SWT.error(SWT.java:3969)
	at org.eclipse.swt.graphics.Image.getBounds(Image.java:821)
	at org.eclipse.swt.custom.CLabel.getTotalSize(CLabel.java:262)
	at org.eclipse.swt.custom.CLabel.computeSize(CLabel.java:161)
	at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.getHeaderHeight(ContentMergeViewer.java:1129)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.getViewportHeight(TextMergeViewer.java:4722)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateVScrollBar(TextMergeViewer.java:4822)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateLines(TextMergeViewer.java:3849)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.documentChanged(TextMergeViewer.java:2957)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.access$15(TextMergeViewer.java:2945)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer$ContributorInfo.documentChanged(TextMergeViewer.java:1146)
	at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:769)
	at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:736)
	at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:721)
	at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:796)
	at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1237)
	at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:223)
	at org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.handleFileContentChanged(ResourceTextFileBuffer.java:508)
	at org.eclipse.core.internal.filebuffers.ResourceFileBuffer$2.execute(ResourceFileBuffer.java:151)
	at org.eclipse.core.internal.filebuffers.ResourceFileBuffer$SafeFileChange.run(ResourceFileBuffer.java:86)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
Comment 2 Tomasz Zarna CLA 2010-05-17 08:23:43 EDT
This may have the same reason as bug 273951, i.e. the editor is closed while update is still taking place. From our observation this is most likely to happen on dual-core machines. Bug 304693 is about improving the editor to be multi-threading-proof or even better to take advantage of multi-threading.
Comment 3 James Blackburn CLA 2010-05-17 08:54:17 EDT
(In reply to comment #2)
> From our observation this is most likely to
> happen on dual-core machines. Bug 304693 is about improving the editor to be
> multi-threading-proof or even better to take advantage of multi-threading.

Ok, sounds plausible as I'm on an 8-core machine here.
Comment 4 Peter Larsen CLA 2011-06-21 07:36:28 EDT
Not sure if this is the same, but I get this several times daily (intel xeon quad core E5420).


!ENTRY org.eclipse.ui 4 4 2011-06-21 13:20:20.940
!MESSAGE An internal error has occurred.
!STACK 0
java.lang.NullPointerException
	at org.eclipse.compare.internal.merge.DocumentMerger.doDiff(DocumentMerger.java:494)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.doDiff(TextMergeViewer.java:3275)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:4999)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer$2.runInUIThread(TextMergeViewer.java:1046)
	at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:173)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:388)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
	at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:275)
	at org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:960)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:995)
	at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:970)
	at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:1166)
	at org.eclipse.compare.internal.CompareContainer.run(CompareContainer.java:80)
	at org.eclipse.compare.CompareEditorInput.run(CompareEditorInput.java:1406)
	at org.eclipse.compare.internal.merge.DocumentMerger.doDiff(DocumentMerger.java:460)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.doDiff(TextMergeViewer.java:3275)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:4999)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer$2.runInUIThread(TextMergeViewer.java:1046)
	at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 5 Knut-Olav Hoven CLA 2012-10-05 06:03:25 EDT
Same in Eclipse 4.2



!ENTRY org.eclipse.team.ui 4 2 2012-10-05 11:53:34.704
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.team.ui".
!STACK 0
java.lang.NullPointerException
        at org.eclipse.compare.internal.merge.DocumentMerger.doDiff(DocumentMerger.java:494)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.doDiff(TextMergeViewer.java:3275)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:4999)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateContent(TextMergeViewer.java:2847)
        at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.internalRefresh(ContentMergeViewer.java:743)
        at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.refresh(ContentMergeViewer.java:718)
        at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.handleCompareInputChange(ContentMergeViewer.java:1312)
        at org.eclipse.compare.contentmergeviewer.TextMergeViewer.handleCompareInputChange(TextMergeViewer.java:4960)
        at org.eclipse.compare.contentmergeviewer.ContentMergeViewer$3.compareInputChanged(ContentMergeViewer.java:350)
        at org.eclipse.team.ui.synchronize.SaveableCompareEditorInput$4.run(SaveableCompareEditorInput.java:320)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.team.ui.synchronize.SaveableCompareEditorInput.propogateInputChange(SaveableCompareEditorInput.java:318)
        at org.eclipse.team.ui.synchronize.SaveableCompareEditorInput$1.compareInputChanged(SaveableCompareEditorInput.java:173)
        at org.eclipse.team.internal.ui.mapping.AbstractCompareInput$1.run(AbstractCompareInput.java:74)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.team.internal.ui.mapping.AbstractCompareInput.fireChange(AbstractCompareInput.java:72)
        at org.eclipse.team.internal.ui.mapping.ResourceDiffCompareInput.fireChange(ResourceDiffCompareInput.java:168)
        at org.eclipse.team.internal.ui.mapping.ResourceDiffCompareInput.update(ResourceDiffCompareInput.java:292)
        at org.eclipse.team.internal.ui.mapping.CompareInputChangeNotifier.fireChange(CompareInputChangeNotifier.java:389)
        at org.eclipse.team.internal.ui.mapping.CompareInputChangeNotifier.fireChanges(CompareInputChangeNotifier.java:295)
        at org.eclipse.team.internal.ui.mapping.CompareInputChangeNotifier$1.run(CompareInputChangeNotifier.java:253)
        at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:164)
        at org.eclipse.ui.internal.UISynchronizer$3.run(UISynchronizer.java:158)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3529)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3182)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1022)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:916)
        at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:585)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:540)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
Comment 6 Andre Dietisheim CLA 2016-07-01 03:46:00 EDT
This still exists in Neon
Comment 7 Eclipse Genie CLA 2020-01-17 05:24:35 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet. As such, we're closing this bug.

If you have further information on the current state of the bug, please add it and reopen this bug. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.