Bug 560744

Summary: NPE in StructureCreator.setupDocument
Product: [Eclipse Project] Platform Reporter: Ed Willink <ed>
Component: CompareAssignee: Platform-Compare-Inbox <platform-compare-inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3    
Version: 4.15   
Target Milestone: ---   
Hardware: PC   
OS: Windows 10   
Whiteboard:

Description Ed Willink CLA 2020-03-03 13:28:17 EST
eclipse.buildId=4.14.0.I20191210-0610
java.version=1.8.0_231

(After a JUnit plugin session that encountered many packet timeouts)

Then quiting the debug and closing all open editors...

Double click in GIT staging view gives the trace below and a tab-only editor.

java.lang.NullPointerException
	at org.eclipse.compare.structuremergeviewer.StructureCreator.setupDocument(StructureCreator.java:171)
	at org.eclipse.compare.structuremergeviewer.StructureCreator.internalCreateStructure(StructureCreator.java:117)
	at org.eclipse.compare.structuremergeviewer.StructureCreator.lambda$0(StructureCreator.java:94)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
	at org.eclipse.compare.internal.Utilities.runInUIThread(Utilities.java:800)
	at org.eclipse.compare.structuremergeviewer.StructureCreator.createStructure(StructureCreator.java:99)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$StructureInfo.createStructure(StructureDiffViewer.java:163)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$StructureInfo.refresh(StructureDiffViewer.java:141)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$StructureInfo.setInput(StructureDiffViewer.java:112)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer.compareInputChanged(StructureDiffViewer.java:350)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer.lambda$1(StructureDiffViewer.java:88)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer.lambda$4(StructureDiffViewer.java:326)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer.compareInputChanged(StructureDiffViewer.java:324)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer.compareInputChanged(StructureDiffViewer.java:312)
	at org.eclipse.jdt.internal.ui.compare.JavaStructureDiffViewer.compareInputChanged(JavaStructureDiffViewer.java:168)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer.inputChanged(StructureDiffViewer.java:281)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1627)
	at org.eclipse.compare.CompareViewerSwitchingPane.setInput(CompareViewerSwitchingPane.java:268)
	at org.eclipse.compare.internal.CompareStructureViewerSwitchingPane.setInput(CompareStructureViewerSwitchingPane.java:141)
	at org.eclipse.compare.CompareEditorInput.feedInput(CompareEditorInput.java:715)
	at org.eclipse.compare.CompareEditorInput.createContents(CompareEditorInput.java:542)
	at org.eclipse.compare.internal.CompareEditor.createCompareControl(CompareEditor.java:448)
	at org.eclipse.compare.internal.CompareEditor.access$6(CompareEditor.java:408)
	at org.eclipse.compare.internal.CompareEditor$1.lambda$0(CompareEditor.java:366)
	at org.eclipse.ui.internal.PendingSyncExec.run(PendingSyncExec.java:68)
	at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:171)
	at org.eclipse.ui.internal.UISynchronizer.lambda$0(UISynchronizer.java:152)
	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:3963)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3590)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:660)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:559)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	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:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	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:657)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Comment 1 Ed Willink CLA 2020-03-03 13:33:06 EST
After restarting Eclipse, GIT staging view double click works fine.

Presumably the many "Did not encounter the UI thread in stack traces." and "Did not encounter the UI thread in stack traces." have corrupted the state upon which the editors depend.

Minimally the NPE needs fixing.