Community
Participate
Working Groups
User was reporting complete loss of progress of his last session. The last log entry of that session indicates that the user closed the workbench with multiple unsaved editors, and an unhandled exception occurred while the SaveablesList.promptForSaving dialog was open. Exact version of the org.eclipse.swt plugins is 3.107.0v20180611-0422 !ENTRY org.eclipse.ui 4 0 2021-07-09 14:41:26.392 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.eclipse.ui.internal.NavigationHistory.getDisplay(NavigationHistory.java:176) at org.eclipse.ui.internal.NavigationHistory.markEditor(NavigationHistory.java:193) at org.eclipse.ui.internal.WorkbenchPage.updateActiveEditorSources(WorkbenchPage.java:433) at org.eclipse.ui.internal.WorkbenchPage.firePartClosed(WorkbenchPage.java:5256) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.lambda$0(CompatibilityPart.java:106) at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:144) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4567) at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:212) at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36) at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201) at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:196) at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:52) at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60) at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374) at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setWidget(UIElementImpl.java:262) at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.unbindWidget(SWTPartRenderer.java:148) at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.lambda$0(SWTPartRenderer.java:137) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:124) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4118) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1076) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) at org.eclipse.swt.widgets.Widget.release(Widget.java:809) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:929) at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:171) at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:728) at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1340) at org.eclipse.swt.widgets.Widget.release(Widget.java:812) at org.eclipse.swt.widgets.Widget.dispose(Widget.java:426) at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:405) at org.eclipse.swt.widgets.Shell.dispose(Shell.java:729) at org.eclipse.swt.widgets.Display.release(Display.java:3585) at org.eclipse.swt.graphics.Device.dispose(Device.java:297) at org.eclipse.swt.widgets.Display.messageProc(Display.java:3120) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2298) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:505) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4863) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:345) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1499) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2159) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4765) at org.eclipse.swt.internal.win32.OS.PeekMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.PeekMessage(OS.java:2787) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3529) at org.eclipse.jface.window.Window.runEventLoop(Window.java:818) at org.eclipse.jface.window.Window.open(Window.java:794) at org.eclipse.ui.internal.SaveablesList.promptForSaving(SaveablesList.java:674) at org.eclipse.ui.internal.SaveablesList.promptForSavingIfNecessary(SaveablesList.java:569) at org.eclipse.ui.internal.SaveablesList.preCloseParts(SaveablesList.java:525) at org.eclipse.ui.internal.WorkbenchPage.saveAll(WorkbenchPage.java:3705) at org.eclipse.ui.internal.Workbench.saveAllEditors(Workbench.java:1397) at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1108) at org.eclipse.ui.internal.Workbench.lambda$4(Workbench.java:1430) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:71) at org.eclipse.ui.internal.Workbench.close(Workbench.java:1430) at org.eclipse.ui.internal.Workbench.close(Workbench.java:1403) at org.eclipse.ui.internal.Workbench.lambda$17(Workbench.java:2844) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4118) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4110) at org.eclipse.swt.widgets.Display.messageProc(Display.java:3133) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2298) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:505) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4863) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:345) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1499) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2159) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4757) at org.eclipse.swt.internal.win32.OS.PeekMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.PeekMessage(OS.java:2787) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3529) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1170) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1059) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:667) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:597) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148) at com.helinks.sts.app.STSApplication.start(STSApplication.java:112) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) 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:656) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:592) at org.eclipse.equinox.launcher.Main.run(Main.java:1498)
*** This bug has been marked as a duplicate of bug 532317 ***
I don't think this bug should be marked as duplicate. The observed behaviour is due to two bugs: - the NullpointerException that is indeed fixed in bug 532317 - the data loss due to the unhandled NullpointerException during the save on close process Unless the save on close is made more robust, the next untimely Exception will still cause data loss.