Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 356184

Summary: NPE caused by PositionTracker.bufferCreated
Product: [Eclipse Project] Platform Reporter: Petar Petrov <petar.petrov>
Component: SearchAssignee: Dani Megert <daniel_megert>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: daniel_megert, petar.petrov, remy.suen, vivkong
Version: 3.6   
Target Milestone: 3.6.2+   
Hardware: All   
OS: All   
Whiteboard:

Description Petar Petrov CLA 2011-08-30 08:05:16 EDT
Build Identifier: 20100617-1415

Line 242 of org.eclipse.search2.internal.ui.text.PositionTracker calls FileBuffers.getWorkspaceFileAtLocation(buffer.getLocation()); which fails with a NPE if the file buffer points to a location on a remote file system.

Reproducible: Always

Steps to Reproduce:
org.eclipse.search2.internal.ui.text.PositionTracker.bufferCreated contains the following code which tries to retrieve the workspace file for the given buffer:

FileBuffers.getWorkspaceFileAtLocation(buffer.getLocation());

This will fail with a NPE if the buffer points to a location on a remote file system (reproduced by using the RSE EFS implementation). getLocation() is documented to return null for files on remote file systems.

Here is the full stack trace of the exception:
java.lang.NullPointerException
	at org.eclipse.core.filebuffers.FileBuffers.normalizeLocation(FileBuffers.java:161)
	at org.eclipse.core.filebuffers.FileBuffers.getWorkspaceFileAtLocation(FileBuffers.java:124)
	at org.eclipse.core.filebuffers.FileBuffers.getWorkspaceFileAtLocation(FileBuffers.java:107)
	at org.eclipse.search2.internal.ui.text.PositionTracker.bufferCreated(PositionTracker.java:242)
	at org.eclipse.core.internal.filebuffers.TextFileBufferManager$11.run(TextFileBufferManager.java:802)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.filebuffers.TextFileBufferManager.fireBufferCreated(TextFileBufferManager.java:800)
	at org.eclipse.core.internal.filebuffers.TextFileBufferManager.connectFileStore(TextFileBufferManager.java:165)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.createFileInfo(TextFileDocumentProvider.java:567)
	at com.microfocus.eclipse.editor.cobol.CobolDocumentProvider.createFileInfo(CobolDocumentProvider.java:68)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.connect(TextFileDocumentProvider.java:478)
	at com.microfocus.eclipse.editor.cobol.CobolDocumentProvider.connect(CobolDocumentProvider.java:117)
	at org.eclipse.ui.texteditor.AbstractTextEditor.doSetInput(AbstractTextEditor.java:4050)
	at org.eclipse.ui.texteditor.StatusTextEditor.doSetInput(StatusTextEditor.java:217)
	at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.doSetInput(AbstractDecoratedTextEditor.java:1444)
	at com.microfocus.eclipse.editor.internal.common.AbstractCobolEditor.doSetInput(AbstractCobolEditor.java:393)
	at org.eclipse.ui.texteditor.AbstractTextEditor$19.run(AbstractTextEditor.java:3037)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
	at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:759)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2600)
	at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3055)
	at org.eclipse.ui.texteditor.AbstractTextEditor.init(AbstractTextEditor.java:3082)
	at org.eclipse.ui.internal.EditorManager.createSite(EditorManager.java:798)
	at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:647)
	at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
	at org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:289)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2863)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2768)
	at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2760)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2711)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2707)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2691)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2682)
	at org.eclipse.ui.ide.IDE.openEditor(IDE.java:488)
	at com.microfocus.eclipse.editor.internal.handlers.OpenCopybookDelegate.openCopyFiles(OpenCopybookDelegate.java:79)
	at com.microfocus.eclipse.editor.internal.handlers.EditorNavigationCommandHandler.execute(EditorNavigationCommandHandler.java:66)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820)
	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806)
	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:774)
	at com.microfocus.eclipse.test.framework.util.MenuUtil$6.run(MenuUtil.java:349)
	at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$5.doRun(UIThreadRunnable.java:221)
	at org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable$1.run(UIThreadRunnable.java:89)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.swtbot.eclipse.core.UITestApplication.start(UITestApplication.java:54)
	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:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Comment 1 Dani Megert CLA 2011-08-31 05:35:18 EDT
Fixed in org.eclipse.search2.internal.ui.text.PositionTracker.java rev. 1.31.
Available in builds >= N20110831-2000.
Comment 2 Dani Megert CLA 2012-02-15 11:29:09 EST
*** Bug 371643 has been marked as a duplicate of this bug. ***
Comment 3 Vivian Kong CLA 2012-02-15 13:28:41 EST
Can we get this backported to Eclipse 3.6.x?
Comment 4 Dani Megert CLA 2012-02-27 06:47:59 EST
Backport to R3_6_maintenance and R3_6_maintenance_Java7:
git.eclipse.org/c/platform/eclipse.platform.text.git/commit/?id=8706821e7e7eb5f5e72c4f363b419c43f1601320

map file changes for R3_6_maintenance:
http://git.eclipse.org/c/platform/eclipse.platform.releng.maps.git/commit/?id=f2cfdc80ebed3e04df023e8687b9bd108475f997

map file changes for R3_6_maintenance_Java7:
http://git.eclipse.org/c/platform/eclipse.platform.releng.maps.git/commit/?id=b17dc44c8273c2cd57d06280cee7cf8a652ac99c


Backport to R3_7_maintenance:
http://git.eclipse.org/c/platform/eclipse.platform.text.git/commit/?id=edd6ebfc44f1d90e33ec9ed14ce2789b6cab0802