Bug 5365 - Severe: ElementTree problems on shutdown
Summary: Severe: ElementTree problems on shutdown
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Resources (show other bugs)
Version: 2.0   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: John Arthorne CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2001-10-30 15:31 EST by John Arthorne CLA
Modified: 2001-11-01 10:20 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 John Arthorne CLA 2001-10-30 15:31:55 EST
Build 20011025

I had this situation earlier today where there was a core internal error on 
shutdown.  It was a usual suspect: a NullPointerException in 
ElementTree#findOldest.  This means the trees didn't form a simple ancestral 
chain, for example if the workspace tree is still mutable at save time.  
Unfortunately I lost the stack trace.  I can't yet reproduce, but I had done 
something like:

1) Startup the workbench
2) Do a build that causes errors (eg, missing builder)
3) Immediately shutdown.
Comment 1 John Arthorne CLA 2001-10-30 16:27:56 EST
Exact steps to reproduce:

1) Create a new workbench, containing PDE project, one java file
2) Shutdown
3) Turn of the org.eclipse.pde plugin (rename plugin.xml->plugin.xml.off)
4) Restart the workbench
5) Force a build by editing java file (error occurs)
6) Immediately shutdown.  Error on shutdown.  Stack trace follows:

	4 org.eclipse.core.resources 568 Could not write metadata for: /.
java.lang.NullPointerException
	at 
org.eclipse.core.internal.watson.ElementTree.findOldest(ElementTree.java:427)
	at 
org.eclipse.core.internal.watson.ElementTreeWriter.sortTrees(ElementTreeWriter.j
ava:105)
	at 
org.eclipse.core.internal.watson.ElementTreeWriter.writeDeltaChain(ElementTreeWr
iter.java:193)
	at 
org.eclipse.core.internal.resources.SaveManager.writeTree(SaveManager.java:914)
	at 
org.eclipse.core.internal.resources.SaveManager.saveTree(SaveManager.java:716)
	at 
org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:1077)
	at 
org.eclipse.core.internal.resources.Workspace.save(Workspace.java:1211)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:178)
	at 
org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:29
6)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:249)
	at 
org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:3
35)
	at 
org.eclipse.ui.internal.Workbench.disconnectFromWorkspace(Workbench.java:185)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:108)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:76)
	at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:157)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:56)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:155)
	at 
org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:256)
	at 
org.eclipse.ui.internal.WorkbenchWindow.access$3(WorkbenchWindow.java:251)
	at 
org.eclipse.ui.internal.WorkbenchWindow$1.run(WorkbenchWindow.java:291)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:56)
	at 
org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:289)
	at 
org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:462)
	at org.eclipse.jface.window.Window$2.shellClosed(Window.java:389)
	at 
org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:150)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:840)
	at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:971)
	at org.eclipse.swt.widgets.Shell.WM_CLOSE(Shell.java:854)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:932)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java(Compiled 
Code))
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method)
	at 
org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Control.windowProc(Control.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:932)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java(Compiled 
Code))
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(Native Method)
	at 
org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Control.windowProc(Control.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:932)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java(Compiled 
Code))
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1158)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:675)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:658)
	at 
org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:82
0)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	1=============</children>=============
Comment 2 John Arthorne CLA 2001-10-30 18:20:28 EST
Oops, I introduced this problem as a result of some builder changes.  Basically 
I was trying to "fake out" builders that were missing.  The problem is these 
fake builders had no tree, thus causing the NPE on shutdown.  I have fixed up 
the builder code, and added some safety checking in the SaveManager code as 
well.
Comment 3 Rodrigo Peretti CLA 2001-11-01 10:20:33 EST
Fixed in v207