Bug 61063 - Infinite loop opening an editor after an exception in the editor.
Summary: Infinite loop opening an editor after an exception in the editor.
Status: RESOLVED WORKSFORME
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows XP
: P2 major (vote)
Target Milestone: 3.0 M9   Edit
Assignee: Hanna Farah CLA
QA Contact:
URL:
Whiteboard:
Keywords: helpwanted
Depends on:
Blocks:
 
Reported: 2004-05-05 11:08 EDT by Michael Van Meekeren CLA
Modified: 2004-05-21 16:00 EDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Van Meekeren CLA 2004-05-05 11:08:41 EDT
build I20040505 2am.

there was an error in the java editor opening a file, however after this error 
occured we still try to give focus to this editor and get into an infinite 
loop.. .see stack trace below


	at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4120)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3012)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3160)
	at org.eclipse.swt.internal.win32.OS.SetFocus(Native Method)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:599)
	at org.eclipse.swt.widgets.Control.setFocus(Control.java:2037)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:447)
	at org.eclipse.jface.window.ApplicationWindow.run
(ApplicationWindow.java:610)
	at org.eclipse.ui.internal.WorkbenchWindow.run
(WorkbenchWindow.java:1678)
	at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit
(AbstractTextEditor.java:2155)
	at org.eclipse.ui.texteditor.AbstractTextEditor.init
(AbstractTextEditor.java:2173)
	at org.eclipse.ui.internal.EditorManager.createSite
(EditorManager.java:569)
	at org.eclipse.ui.internal.EditorManager.openInternalEditor
(EditorManager.java:633)
	at org.eclipse.ui.internal.EditorManager.access$7
(EditorManager.java:619)
	at org.eclipse.ui.internal.EditorManager$7.run(EditorManager.java:798)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:604)
	at org.eclipse.core.runtime.Platform.run(Platform.java:545)
	at org.eclipse.ui.internal.EditorManager.busyRestoreEditor
(EditorManager.java:773)
	at org.eclipse.ui.internal.EditorManager$6.run(EditorManager.java:766)
	at org.eclipse.swt.custom.BusyIndicator.showWhile
(BusyIndicator.java:84)
	at org.eclipse.ui.internal.EditorManager.restoreEditor
(EditorManager.java:762)
	at org.eclipse.ui.internal.EditorManager$Editor.getEditor
(EditorManager.java:1136)
	at org.eclipse.ui.internal.EditorManager$Editor.getPart
(EditorManager.java:1128)
	at org.eclipse.ui.internal.PartPane.requestActivation
(PartPane.java:246)
	at org.eclipse.ui.internal.EditorPane.requestActivation
(EditorPane.java:150)
	at org.eclipse.ui.internal.PartPane.handleEvent(PartPane.java:226)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:820)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:801)
	at org.eclipse.swt.widgets.Shell.setActiveControl(Shell.java:913)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:1756)
	at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4120)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3012)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3160)
	at org.eclipse.swt.internal.win32.OS.SetFocus(Native Method)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:599)
	at org.eclipse.swt.widgets.Control.setFocus(Control.java:2037)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:447)
	at org.eclipse.jface.window.ApplicationWindow.run
(ApplicationWindow.java:610)
	at org.eclipse.ui.internal.WorkbenchWindow.run
(WorkbenchWindow.java:1678)
	at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit
(AbstractTextEditor.java:2155)
	at org.eclipse.ui.texteditor.AbstractTextEditor.init
(AbstractTextEditor.java:2173)
	at org.eclipse.ui.internal.EditorManager.createSite
(EditorManager.java:569)
	at org.eclipse.ui.internal.EditorManager.openInternalEditor
(EditorManager.java:633)
	at org.eclipse.ui.internal.EditorManager.access$7
(EditorManager.java:619)
	at org.eclipse.ui.internal.EditorManager$7.run(EditorManager.java:798)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:604)
	at org.eclipse.core.runtime.Platform.run(Platform.java:545)
	at org.eclipse.ui.internal.EditorManager.busyRestoreEditor
(EditorManager.java:773)
	at org.eclipse.ui.internal.EditorManager$6.run(EditorManager.java:766)
	at org.eclipse.swt.custom.BusyIndicator.showWhile
(BusyIndicator.java:84)
	at org.eclipse.ui.internal.EditorManager.restoreEditor
(EditorManager.java:762)
	at org.eclipse.ui.internal.EditorManager$Editor.getEditor
(EditorManager.java:1136)
	at org.eclipse.ui.internal.EditorManager$Editor.getPart
(EditorManager.java:1128)
	at org.eclipse.ui.internal.PartPane.requestActivation
(PartPane.java:246)
	at org.eclipse.ui.internal.EditorPane.requestActivation
(EditorPane.java:150)
	at org.eclipse.ui.internal.PartPane.handleEvent(PartPane.java:226)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:820)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:801)
	at org.eclipse.swt.widgets.Shell.setActiveControl(Shell.java:913)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:1756)
	at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4120)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3012)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3160)
	at org.eclipse.swt.internal.win32.OS.SetFocus(Native Method)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:599)
	at org.eclipse.swt.widgets.Control.setFocus(Control.java:2037)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:447)
	at org.eclipse.jface.window.ApplicationWindow.run
(ApplicationWindow.java:610)
	at org.eclipse.ui.internal.WorkbenchWindow.run
(WorkbenchWindow.java:1678)
	at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit
(AbstractTextEditor.java:2155)
	at org.eclipse.ui.texteditor.AbstractTextEditor.init
(AbstractTextEditor.java:2173)
	at org.eclipse.ui.internal.EditorManager.createSite
(EditorManager.java:569)
	at org.eclipse.ui.internal.EditorManager.openInternalEditor
(EditorManager.java:633)
	at org.eclipse.ui.internal.EditorManager.access$7
(EditorManager.java:619)
	at org.eclipse.ui.internal.EditorManager$7.run(EditorManager.java:798)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:604)
	at org.eclipse.core.runtime.Platform.run(Platform.java:545)
	at org.eclipse.ui.internal.EditorManager.busyRestoreEditor
(EditorManager.java:773)
	at org.eclipse.ui.internal.EditorManager$6.run(EditorManager.java:766)
	at org.eclipse.swt.custom.BusyIndicator.showWhile
(BusyIndicator.java:84)
	at org.eclipse.ui.internal.EditorManager.restoreEditor
(EditorManager.java:762)
	at org.eclipse.ui.internal.EditorManager$Editor.getEditor
(EditorManager.java:1136)
	at org.eclipse.ui.internal.EditorManager$Editor.getPart
(EditorManager.java:1128)
	at org.eclipse.ui.internal.PartPane.requestActivation
(PartPane.java:246)
	at org.eclipse.ui.internal.EditorPane.requestActivation
(EditorPane.java:150)
	at org.eclipse.ui.internal.PartPane.handleEvent(PartPane.java:226)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:820)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:801)
	at org.eclipse.swt.widgets.Shell.setActiveControl(Shell.java:913)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:1756)
	at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4120)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3012)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3160)
	at org.eclipse.swt.internal.win32.OS.SetFocus(Native Method)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:599)
	at org.eclipse.swt.widgets.Control.setFocus(Control.java:2037)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:447)
	at org.eclipse.jface.window.ApplicationWindow.run
(ApplicationWindow.java:610)
	at org.eclipse.ui.internal.WorkbenchWindow.run
(WorkbenchWindow.java:1678)
	at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit
(AbstractTextEditor.java:2155)
	at org.eclipse.ui.texteditor.AbstractTextEditor.init
(AbstractTextEditor.java:2173)
	at org.eclipse.ui.internal.EditorManager.createSite
(EditorManager.java:569)
	at org.eclipse.ui.internal.EditorManager.openInternalEditor
(EditorManager.java:633)
	at org.eclipse.ui.internal.EditorManager.access$7
(EditorManager.java:619)
	at org.eclipse.ui.internal.EditorManager$7.run(EditorManager.java:798)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:604)
	at org.eclipse.core.runtime.Platform.run(Platform.java:545)
	at org.eclipse.ui.internal.EditorManager.busyRestoreEditor
(EditorManager.java:773)
	at org.eclipse.ui.internal.EditorManager$6.run(EditorManager.java:766)
	at org.eclipse.swt.custom.BusyIndicator.showWhile
(BusyIndicator.java:84)
	at org.eclipse.ui.internal.EditorManager.restoreEditor
(EditorManager.java:762)
	at org.eclipse.ui.internal.EditorManager$Editor.getEditor
(EditorManager.java:1136)
	at org.eclipse.ui.internal.EditorManager$Editor.getPart
(EditorManager.java:1128)
	at org.eclipse.ui.internal.PartPane.requestActivation
(PartPane.java:246)
	at org.eclipse.ui.internal.EditorPane.requestActivation
(EditorPane.java:150)
	at org.eclipse.ui.internal.PartPane.handleEvent(PartPane.java:226)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:820)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:801)
	at org.eclipse.swt.widgets.Shell.setActiveControl(Shell.java:913)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:1756)
	at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4120)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3012)
!ENTRY org.eclipse.core.runtime 4 2 May 05, 2004 10:52:28.440
!MESSAGE Problems occurred when invoking code from plug-
in: "org.eclipse.core.runtime".
!STACK 0
java.lang.NullPointerException
	at 
org.eclipse.jdt.internal.ui.javaeditor.BasicJavaEditorActionContributor.setActi
veEditor(BasicJavaEditorActionContributor.java:242)
	at 
org.eclipse.jdt.internal.ui.javaeditor.BasicEditorActionContributor.setActiveEd
itor(BasicEditorActionContributor.java:83)
	at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditorActionContributor.s
etActiveEditor(CompilationUnitEditorActionContributor.java:59)
	at org.eclipse.ui.internal.EditorActionBars.partChanged
(EditorActionBars.java:291)
	at org.eclipse.ui.internal.WorkbenchPage$2.run(WorkbenchPage.java:474)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:604)
	at org.eclipse.core.runtime.Platform.run(Platform.java:545)
	at org.eclipse.ui.internal.WorkbenchPage.activatePart
(WorkbenchPage.java:466)
	at org.eclipse.ui.internal.WorkbenchPage.setActivePart
(WorkbenchPage.java:2596)
	at org.eclipse.ui.internal.WorkbenchPage.requestActivation
(WorkbenchPage.java:2307)
	at org.eclipse.ui.internal.PartPane.requestActivation
(PartPane.java:246)
	at org.eclipse.ui.internal.EditorPane.requestActivation
(EditorPane.java:150)
	at org.eclipse.ui.internal.PartPane.handleEvent(PartPane.java:226)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:820)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:801)
	at org.eclipse.swt.widgets.Shell.setActiveControl(Shell.java:913)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:1756)
	at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4120)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3012)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3160)
	at org.eclipse.swt.internal.win32.OS.SetFocus(Native Method)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:599)
	at org.eclipse.swt.widgets.Control.setSavedFocus(Control.java:2262)
	at org.eclipse.swt.widgets.Decorations.restoreFocus
(Decorations.java:733)
	at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE
(Decorations.java:1477)
	at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:1327)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:2949)
	at org.eclipse.swt.widgets.Decorations.windowProc
(Decorations.java:1449)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3160)
	at org.eclipse.swt.internal.win32.OS.DestroyWindow(Native Method)
	at org.eclipse.swt.widgets.Control.destroyWidget(Control.java:504)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:369)
	at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:371)
	at org.eclipse.swt.widgets.Shell.dispose(Shell.java:486)
	at org.eclipse.jface.window.Window.close(Window.java:253)
	at org.eclipse.jface.dialogs.Dialog.close(Dialog.java:811)
	at 
org.eclipse.ui.internal.ide.dialogs.InternalErrorDialog.buttonPressed
(InternalErrorDialog.java:88)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:491)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:89)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2594)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2272)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:668)
	at org.eclipse.jface.window.Window.open(Window.java:648)
	at org.eclipse.ui.internal.ide.dialogs.InternalErrorDialog.open
(InternalErrorDialog.java:71)
	at org.eclipse.ui.internal.ide.dialogs.InternalErrorDialog.openQuestion
(InternalErrorDialog.java:173)
	at org.eclipse.ui.internal.ide.IDEExceptionHandler.openQuestionDialog
(IDEExceptionHandler.java:151)
	at org.eclipse.ui.internal.ide.IDEExceptionHandler.handleException
(IDEExceptionHandler.java:83)
	at org.eclipse.ui.internal.ide.IDEWorkbenchAdvisor.eventLoopException
(IDEWorkbenchAdvisor.java:230)
	at org.eclipse.ui.internal.ExceptionHandler.handleException
(ExceptionHandler.java:53)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1357)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1324)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench
(Workbench.java:243)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:140)
	at org.eclipse.ui.internal.ide.IDEApplication.run
(IDEApplication.java:90)
	at org.eclipse.core.internal.runtime.PlatformActivator$1.run
(PlatformActivator.java:283)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:242)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:119)
	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:324)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:269)
	at org.eclipse.core.launcher.Main.run(Main.java:700)
	at org.eclipse.core.launcher.Main.main(Main.java:684)
Comment 1 Hanna Farah CLA 2004-05-19 17:50:35 EDT
Michael and I tried using the org.eclipse.ui.examples.multipageeditor example 
to re-produce this bug but it could not be re-produced. We introduced 
exceptions at various places (constructor, saving, switching pages) but they 
were caught and handled properly, not causing any infinite loops.

When looking at the stack trace and the code, in ApplicationWindow.run, we get 
the current control that has focus, do some work, return focus to the previous 
control by calling setFocus which causes an EditorPane to requestActivation; 
the internalInit method in AbstractTextEditor will then call 
ApplicationWindow.run and we'll be in the loop.
Comment 2 Nick Edgar CLA 2004-05-19 21:29:29 EDT
What was the focus control before the run?  If it was the editor, then it should
have already been fully initialized.

ApplicationWindow.run should be changed to use forceFocus instead of setFocus.
Comment 3 Nick Edgar CLA 2004-05-19 21:33:02 EDT
I've released the forceFocus change in ApplicationWindow.run.
Comment 4 Douglas Pollock CLA 2004-05-21 10:14:39 EDT
There was a change to ApplicationWindow at May 19, 9:19 p.m.  It claimed to be 
fixing this bug.  Is that true? 
Comment 5 Nick Edgar CLA 2004-05-21 15:04:44 EDT
Hanna, can you please verify whether the forceFocus change fixed the problem?
Comment 6 Hanna Farah CLA 2004-05-21 16:00:01 EDT
As I mentionned in comment #1, this bug was only encountered once and could not 
be reproduced using the multi-page editor example. Nick's comment in his change 
(setFocus to forceFocus) makes sense for preventing this bug from occuring.