Bug 3848 - Core walkback triggers others in search and editor (1GEWO2R)
Summary: Core walkback triggers others in search and editor (1GEWO2R)
Status: RESOLVED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 2.0   Edit
Hardware: All Windows 2000
: P4 normal (vote)
Target Milestone: ---   Edit
Assignee: Erich Gamma CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2001-10-10 23:01 EDT by Nick Edgar CLA
Modified: 2001-11-11 05:38 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nick Edgar CLA 2001-10-10 23:01:52 EDT
- I was trying to track down a bug in search.
- I had created a new project, and imported some XML files, did a search, which found a match in an XML file, and opened it
 (had to open file in default editor, due to other problem with XML files opening in scripted resource editor example by default).
- I then deleted the project.

I got an error dialog, and the log had:

Log: Wed Jun 06 11:20:44 EDT 2001
2 org.eclipse.core.resources 2 Problems occurred when invoking code from plug-in: org.eclipse.core.resources.
java.lang.NullPointerException
	java.lang.Throwable()
	java.lang.Exception()
	java.lang.RuntimeException()
	java.lang.NullPointerException()
	void org.eclipse.core.internal.resources.File.create(java.io.InputStream, boolean, org.eclipse.core.runtime.IProgressMonitor)
	void org.eclipse.core.internal.resources.File.create(java.io.InputStream, boolean, org.eclipse.core.runtime.IProgressMonitor)
	void org.eclipse.jdt.internal.core.JavaProject.setSharedProperty(org.eclipse.core.runtime.QualifiedName, java.lang.String)
	void org.eclipse.jdt.internal.core.JavaProject.saveClasspath(boolean)
	void org.eclipse.jdt.internal.core.JavaProject.saveClasspath()
	void org.eclipse.jdt.internal.core.DeltaProcessor.checkProjectPropertyFileUpdate(org.eclipse.core.resources.IResourceDelta, org.eclipse.jdt.core.IJavaElement)
	void org.eclipse.jdt.internal.core.DeltaProcessor.checkProjectPropertyFileUpdate(org.eclipse.core.resources.IResourceDelta, org.eclipse.jdt.core.IJavaElement)
	void org.eclipse.jdt.internal.core.DeltaProcessor.checkProjectPropertyFileUpdate(org.eclipse.core.resources.IResourceDelta, org.eclipse.jdt.core.IJavaElement)
	void org.eclipse.jdt.internal.core.JavaModelManager.resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
	void org.eclipse.core.internal.events.NotificationManager$1.run()
	void org.eclipse.core.internal.runtime.InternalPlatform.run(org.eclipse.core.runtime.ISafeRunnable)
	void org.eclipse.core.runtime.Platform.run(org.eclipse.core.runtime.ISafeRunnable)
	void org.eclipse.core.internal.events.NotificationManager.notify(org.eclipse.core.internal.events.ResourceChangeListenerList$ListenerEntry [], org.eclipse.core.resources.IResourceChangeEvent, boolean)
	void org.eclipse.core.internal.events.NotificationManager.broadcastChanges(org.eclipse.core.internal.events.ResourceChangeListenerList$ListenerEntry [], int, org.eclipse.core.resources.IResourceDelta, boolean)
	org.eclipse.core.resources.IResourceDelta org.eclipse.core.internal.events.NotificationManager.broadcastChanges(org.eclipse.core.resources.IResourceDelta, org.eclipse.core.internal.watson.ElementTree, int, boolean, boolean)
	org.eclipse.core.resources.IResourceDelta org.eclipse.core.internal.resources.Workspace.broadcastChanges(org.eclipse.core.resources.IResourceDelta, org.eclipse.core.internal.watson.ElementTree, int, boolean, boolean, org.eclipse.core.runtime.IProgressMonitor)
	void org.eclipse.core.internal.resources.Workspace.endOperation(boolean, org.eclipse.core.runtime.IProgressMonitor)
	void org.eclipse.core.internal.resources.Workspace.run(org.eclipse.core.resources.IWorkspaceRunnable, org.eclipse.core.runtime.IProgressMonitor)
	void org.eclipse.ui.actions.WorkspaceModifyOperation.run(org.eclipse.core.runtime.IProgressMonitor)
	void org.eclipse.jface.operation.ModalContext$ModalContextThread.run()

Log: Wed Jun 06 11:20:44 EDT 2001
1 org.eclipse.core.resources 4 Unhandled exception caught in event loop.
Log: Wed Jun 06 11:20:45 EDT 2001
4 org.eclipse.ui 0 java.lang.NullPointerException
java.lang.NullPointerException
	java.lang.Throwable()
	java.lang.Exception()
	java.lang.RuntimeException()
	java.lang.NullPointerException()
	java.lang.String org.eclipse.search.internal.ui.SearchResultLabelProvider$FileLabelProvider.getText(java.lang.Object)
	java.lang.String org.eclipse.search.internal.ui.SearchResultLabelProvider$FileLabelProvider.getText(java.lang.Object)
	java.lang.String org.eclipse.search.internal.ui.SearchResultLabelProvider.getText(java.lang.Object)
	void org.eclipse.jface.viewers.TableViewer.doUpdateItem(org.eclipse.swt.widgets.Widget, java.lang.Object, boolean)
	void org.eclipse.jface.viewers.StructuredViewer.updateItem(org.eclipse.swt.widgets.Widget, java.lang.Object)
	void org.eclipse.search.internal.ui.SearchResultViewer.handleUpdateMatch(org.eclipse.search.ui.ISearchResultViewEntry)
	void org.eclipse.search.internal.ui.SearchManager.handleRemoveMatch(org.eclipse.core.resources.IMarker)
	boolean org.eclipse.search.internal.ui.SearchManager$2.visit(org.eclipse.core.resources.IResourceDelta)
	void org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, boolean)
	void org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, boolean)
	void org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, boolean)
	void org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor)
	void org.eclipse.search.internal.ui.SearchManager.handleResourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
	void org.eclipse.search.internal.ui.SearchManager$1.run()
	void org.eclipse.ui.internal.UIWorkspaceLock.doPendingWork()
	void org.eclipse.ui.internal.UISynchronizer$1.run()
	void org.eclipse.swt.widgets.RunnableLock.run()
	boolean org.eclipse.swt.widgets.Synchronizer.runAsyncMessages()
	boolean org.eclipse.swt.widgets.Display.runAsyncMessages()
	boolean org.eclipse.swt.widgets.Display.readAndDispatch()
	void org.eclipse.jface.operation.ModalContext$ModalContextThread.block()
	void org.eclipse.jface.operation.ModalContext.run(org.eclipse.jface.operation.IRunnableWithProgress, boolean, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.swt.widgets.Display)
	void org.eclipse.jface.dialogs.ProgressMonitorDialog.run(boolean, boolean, org.eclipse.jface.operation.IRunnableWithProgress)
	void org.eclipse.ui.actions.DeleteResourceAction.run()
	void org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(org.eclipse.swt.widgets.Event)
	void org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent(org.eclipse.swt.widgets.Event)
	void org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent(org.eclipse.swt.widgets.Event)
	void org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event)
	void org.eclipse.swt.widgets.Widget.notifyListeners(int, org.eclipse.swt.widgets.Event)
	boolean org.eclipse.swt.widgets.Display.runDeferredEvents()
	boolean org.eclipse.swt.widgets.Display.readAndDispatch()
	void org.eclipse.ui.internal.Workbench.runEventLoop()
	java.lang.Object org.eclipse.ui.internal.Workbench.run(java.lang.Object)
	java.lang.Object org.eclipse.core.internal.boot.InternalBootLoader.run(java.lang.String, java.net.URL, java.lang.String, java.lang.String [])
	java.lang.Object org.eclipse.core.boot.BootLoader.run(java.lang.String, java.net.URL, java.lang.String, java.lang.String [])
	java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object [])
	java.lang.Object org.eclipse.core.launcher.Main.basicRun(java.lang.String [])
	java.lang.Object org.eclipse.core.launcher.Main.run(java.lang.String [])
	void org.eclipse.core.launcher.UIMain.main(java.lang.String [])

Log: Wed Jun 06 11:20:45 EDT 2001
4 org.eclipse.ui 0 Exception creating image descriptor for: org.eclipse.core.resources.taskmarker
org.eclipse.core.internal.resources.ResourceException: Marker id: 3 not found.
	java.lang.Throwable(java.lang.String)
	java.lang.Exception(java.lang.String)
	org.eclipse.core.runtime.CoreException(org.eclipse.core.runtime.IStatus)
	org.eclipse.core.internal.resources.ResourceException(org.eclipse.core.runtime.IStatus)
	void org.eclipse.core.internal.resources.Marker.checkInfo(org.eclipse.core.internal.resources.MarkerInfo)
	java.lang.String org.eclipse.core.internal.resources.Marker.getType()
	boolean org.eclipse.core.internal.resources.Marker.isSubtypeOf(java.lang.String)
	org.eclipse.jface.resource.ImageDescriptor org.eclipse.ui.internal.registry.MarkerImageProviderRegistry.getImageDescriptor(org.eclipse.core.resources.IMarker)
	org.eclipse.jface.resource.ImageDescriptor org.eclipse.ui.internal.model.WorkbenchMarker.getImageDescriptor(java.lang.Object)
	org.eclipse.swt.graphics.Image org.eclipse.ui.texteditor.MarkerAnnotation.getImage(org.eclipse.swt.widgets.Display)
	void org.eclipse.ui.texteditor.MarkerAnnotation.paint(org.eclipse.swt.graphics.GC, org.eclipse.swt.widgets.Canvas, org.eclipse.swt.graphics.Rectangle)
	void org.eclipse.jface.text.source.VerticalRuler.doPaint(org.eclipse.swt.graphics.GC)
	void org.eclipse.jface.text.source.VerticalRuler.doubleBufferPaint(org.eclipse.swt.graphics.GC)
	void org.eclipse.jface.text.source.VerticalRuler$2.paintControl(org.eclipse.swt.events.PaintEvent)
	void org.eclipse.swt.widgets.TypedListener.handleEvent(org.eclipse.swt.widgets.Event)
	void org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event)
	void org.eclipse.swt.widgets.Widget.sendEvent(int, org.eclipse.swt.widgets.Event)
	org.eclipse.swt.internal.win32.LRESULT org.eclipse.swt.widgets.Composite.WM_PAINT(int, int)
	int org.eclipse.swt.widgets.Control.windowProc(int, int, int)
	int org.eclipse.swt.widgets.Display.windowProc(int, int, int, int)
	int org.eclipse.swt.internal.win32.OS.DispatchMessage(org.eclipse.swt.internal.win32.MSG)
	boolean org.eclipse.swt.widgets.Display.readAndDispatch()
	void org.eclipse.jface.window.Window.runEventLoop(org.eclipse.swt.widgets.Shell)
	int org.eclipse.jface.window.Window.open()
	void org.eclipse.jface.dialogs.MessageDialog.openError(org.eclipse.swt.widgets.Shell, java.lang.String, java.lang.String)
	void org.eclipse.ui.internal.Workbench.handleExceptionInEventLoop(java.lang.Throwable)
	void org.eclipse.ui.internal.Workbench.runEventLoop()
	java.lang.Object org.eclipse.ui.internal.Workbench.run(java.lang.Object)
	java.lang.Object org.eclipse.core.internal.boot.InternalBootLoader.run(java.lang.String, java.net.URL, java.lang.String, java.lang.String [])
	java.lang.Object org.eclipse.core.boot.BootLoader.run(java.lang.String, java.net.URL, java.lang.String, java.lang.String [])
	java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object [])
	java.lang.Object org.eclipse.core.launcher.Main.basicRun(java.lang.String [])
	java.lang.Object org.eclipse.core.launcher.Main.run(java.lang.String [])
	void org.eclipse.core.launcher.UIMain.main(java.lang.String [])

Log: Wed Jun 06 11:20:45 EDT 2001
4 org.eclipse.ui 0 Exception creating image descriptor for: org.eclipse.core.resources.taskmarker
org.eclipse.core.internal.resources.ResourceException: Marker id: 2 not found.
	java.lang.Throwable(java.lang.String)
	java.lang.Exception(java.lang.String)
	org.eclipse.core.runtime.CoreException(org.eclipse.core.runtime.IStatus)
	org.eclipse.core.internal.resources.ResourceException(org.eclipse.core.runtime.IStatus)
	void org.eclipse.core.internal.resources.Marker.checkInfo(org.eclipse.core.internal.resources.MarkerInfo)
	java.lang.String org.eclipse.core.internal.resources.Marker.getType()
	boolean org.eclipse.core.internal.resources.Marker.isSubtypeOf(java.lang.String)
	org.eclipse.jface.resource.ImageDescriptor org.eclipse.ui.internal.registry.MarkerImageProviderRegistry.getImageDescriptor(org.eclipse.core.resources.IMarker)
	org.eclipse.jface.resource.ImageDescriptor org.eclipse.ui.internal.model.WorkbenchMarker.getImageDescriptor(java.lang.Object)
	org.eclipse.swt.graphics.Image org.eclipse.ui.texteditor.MarkerAnnotation.getImage(org.eclipse.swt.widgets.Display)
	void org.eclipse.ui.texteditor.MarkerAnnotation.paint(org.eclipse.swt.graphics.GC, org.eclipse.swt.widgets.Canvas, org.eclipse.swt.graphics.Rectangle)
	void org.eclipse.jface.text.source.VerticalRuler.doPaint(org.eclipse.swt.graphics.GC)
	void org.eclipse.jface.text.source.VerticalRuler.doubleBufferPaint(org.eclipse.swt.graphics.GC)
	void org.eclipse.jface.text.source.VerticalRuler$2.paintControl(org.eclipse.swt.events.PaintEvent)
	void org.eclipse.swt.widgets.TypedListener.handleEvent(org.eclipse.swt.widgets.Event)
	void org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event)
	void org.eclipse.swt.widgets.Widget.sendEvent(int, org.eclipse.swt.widgets.Event)
	org.eclipse.swt.internal.win32.LRESULT org.eclipse.swt.widgets.Composite.WM_PAINT(int, int)
	int org.eclipse.swt.widgets.Control.windowProc(int, int, int)
	int org.eclipse.swt.widgets.Display.windowProc(int, int, int, int)
	int org.eclipse.swt.internal.win32.OS.DispatchMessage(org.eclipse.swt.internal.win32.MSG)
	boolean org.eclipse.swt.widgets.Display.readAndDispatch()
	void org.eclipse.jface.window.Window.runEventLoop(org.eclipse.swt.widgets.Shell)
	int org.eclipse.jface.window.Window.open()
	void org.eclipse.jface.dialogs.MessageDialog.openError(org.eclipse.swt.widgets.Shell, java.lang.String, java.lang.String)
	void org.eclipse.ui.internal.Workbench.handleExceptionInEventLoop(java.lang.Throwable)
	void org.eclipse.ui.internal.Workbench.runEventLoop()
	java.lang.Object org.eclipse.ui.internal.Workbench.run(java.lang.Object)
	java.lang.Object org.eclipse.core.internal.boot.InternalBootLoader.run(java.lang.String, java.net.URL, java.lang.String, java.lang.String [])
	java.lang.Object org.eclipse.core.boot.BootLoader.run(java.lang.String, java.net.URL, java.lang.String, java.lang.String [])
	java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object [])
	java.lang.Object org.eclipse.core.launcher.Main.basicRun(java.lang.String [])
	java.lang.Object org.eclipse.core.launcher.Main.run(java.lang.String [])
	void org.eclipse.core.launcher.UIMain.main(java.lang.String [])


Core knows about their problem in create, but what's interesting is that it triggered the other problems.

The SearchResultLabelProvider$FileLabelProvider generated a NPE in the notification from Core for the deletion.

Also, the editor's marker annotation model is trying to refer to a marker which has been deleted when the ruler redraws.

Both of these are apparently due to the UI running (in the error dialog's event loop) before they've had a chance to properly
update in response to the deletion, because it aborted due to the NPE when notifying the Java model.

NOTES:

KH (6/6/2001 12:56:44 PM)
	Moving to JUI for comment. 

EG (6/6/2001 11:23:23 AM)
	there are 2 walkbacks:
	- SearchResultLabelProvider
	- VerticalRuler
	We should investigate to understand the consequences and whether we are not defensive enough.
	It is critical the CORE problem is fixed.

JW (6/6/01 5:17:03 PM) Defer if the Core problem is fixed.

JM (6/6/2001 6:44:12 PM)
	Problem is fixed for 120.
	See
		1GESYPI: ITPUI:WIN2000 - NullPointerException: Navigator

EG (6/6/2001 1:21:31 PM)
	defered
Comment 1 Martin Aeschlimann CLA 2001-10-16 11:14:03 EDT
moved to 'active'
Comment 2 DJ Houghton CLA 2001-10-24 07:22:31 EDT
PRODUCT VERSION:
119

Comment 3 Erich Gamma CLA 2001-11-11 05:38:50 EST
case is handled properly in the latest - closing