Community
Participate
Working Groups
Build Identifier: Closing TS Explorer will result in the following NPE: Daemon Thread [Thread-0] (Suspended (exception java.lang.NullPointerException)) org.eclipse.tigerstripe.workbench.ui.internal.views.explorerview.TigerstripeContentProvider(org.eclipse.jdt.internal.ui.navigator.JavaNavigatorContentProvider).dispose() line: 97 org.eclipse.tigerstripe.workbench.ui.internal.views.explorerview.TigerstripeContentProvider.dispose() line: 108 org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider$1.run() line: 62 org.eclipse.core.runtime.SafeRunner.run(org.eclipse.core.runtime.ISafeRunnable) line: 42 org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.dispose() line: 53 org.eclipse.ui.internal.navigator.extensions.NavigatorContentExtension$1.run() line: 225 org.eclipse.core.runtime.SafeRunner.run(org.eclipse.core.runtime.ISafeRunnable) line: 42 org.eclipse.ui.internal.navigator.extensions.NavigatorContentExtension.dispose() line: 214 org.eclipse.ui.internal.navigator.NavigatorContentService.dispose() line: 353 org.eclipse.ui.navigator.CommonViewer.dispose() line: 251 org.eclipse.ui.navigator.CommonViewer.handleDispose(org.eclipse.swt.events.DisposeEvent) line: 239 org.eclipse.jface.viewers.ContentViewer$2.widgetDisposed(org.eclipse.swt.events.DisposeEvent) line: 214 org.eclipse.swt.widgets.TypedListener.handleEvent(org.eclipse.swt.widgets.Event) line: 117 org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event) line: 84 org.eclipse.swt.widgets.Display.sendEvent(org.eclipse.swt.widgets.EventTable, org.eclipse.swt.widgets.Event) line: 3543 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(org.eclipse.swt.widgets.Event) line: 1250 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event, boolean) line: 1273 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(int) line: 1254 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).release(boolean) line: 1108 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Control).release(boolean) line: 2458 org.eclipse.swt.widgets.Composite.releaseChildren(boolean) line: 754 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).release(boolean) line: 1111 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Control).release(boolean) line: 2458 org.eclipse.swt.widgets.Composite.releaseChildren(boolean) line: 754 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).release(boolean) line: 1111 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Control).release(boolean) line: 2458 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).dispose() line: 544 org.eclipse.ui.internal.ViewPane(org.eclipse.ui.internal.PartPane).dispose() line: 180 org.eclipse.ui.internal.ViewPane.dispose() line: 193 org.eclipse.ui.internal.ViewReference(org.eclipse.ui.internal.WorkbenchPartReference).dispose() line: 681 org.eclipse.ui.internal.WorkbenchPage.disposePart(org.eclipse.ui.internal.WorkbenchPartReference) line: 1715 org.eclipse.ui.internal.WorkbenchPage.partRemoved(org.eclipse.ui.internal.WorkbenchPartReference) line: 1707 org.eclipse.ui.internal.ViewFactory.releaseView(org.eclipse.ui.IViewReference) line: 257 org.eclipse.ui.internal.Perspective.hideView(org.eclipse.ui.IViewReference) line: 607 org.eclipse.ui.internal.WorkbenchPage.hideView(org.eclipse.ui.IViewReference) line: 2381 org.eclipse.ui.internal.ViewPane.doHide() line: 213 org.eclipse.ui.internal.ViewStack(org.eclipse.ui.internal.PartStack).close(org.eclipse.ui.presentations.IPresentablePart) line: 543 org.eclipse.ui.internal.ViewStack(org.eclipse.ui.internal.PartStack).close(org.eclipse.ui.presentations.IPresentablePart[]) line: 526 org.eclipse.ui.internal.PartStack$1.close(org.eclipse.ui.presentations.IPresentablePart[]) line: 122 org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(org.eclipse.ui.internal.presentations.util.TabFolderEvent) line: 83 org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder(org.eclipse.ui.internal.presentations.util.AbstractTabFolder).fireEvent(org.eclipse.ui.internal.presentations.util.TabFolderEvent) line: 270 org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder(org.eclipse.ui.internal.presentations.util.AbstractTabFolder).fireEvent(int, org.eclipse.ui.internal.presentations.util.AbstractTabItem) line: 279 org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.access$1(org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder, int, org.eclipse.ui.internal.presentations.util.AbstractTabItem) line: 1 org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder$1.closeButtonPressed(org.eclipse.swt.custom.CTabItem) line: 70 org.eclipse.ui.internal.presentations.PaneFolder.notifyCloseListeners(org.eclipse.swt.custom.CTabItem) line: 626 org.eclipse.ui.internal.presentations.PaneFolder$3.close(org.eclipse.swt.custom.CTabFolderEvent) line: 206 org.eclipse.swt.custom.CTabFolder.onMouse(org.eclipse.swt.widgets.Event) line: 2199 org.eclipse.swt.custom.CTabFolder$1.handleEvent(org.eclipse.swt.widgets.Event) line: 327 org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event) line: 84 org.eclipse.swt.widgets.Display.sendEvent(org.eclipse.swt.widgets.EventTable, org.eclipse.swt.widgets.Event) line: 3543 org.eclipse.swt.custom.CTabFolder(org.eclipse.swt.widgets.Widget).sendEvent(org.eclipse.swt.widgets.Event) line: 1250 org.eclipse.swt.custom.CTabFolder(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event, boolean) line: 1273 org.eclipse.swt.custom.CTabFolder(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event) line: 1258 org.eclipse.swt.custom.CTabFolder(org.eclipse.swt.widgets.Widget).notifyListeners(int, org.eclipse.swt.widgets.Event) line: 1079 org.eclipse.swt.widgets.Display.runDeferredEvents() line: 3441 org.eclipse.swt.widgets.Display.readAndDispatch() line: 3100 org.eclipse.ui.internal.Workbench.runEventLoop(org.eclipse.jface.window.Window$IExceptionHandler, org.eclipse.swt.widgets.Display) line: 2405 org.eclipse.ui.internal.Workbench.runUI() line: 2369 org.eclipse.ui.internal.Workbench.access$4(org.eclipse.ui.internal.Workbench) line: 2221 org.eclipse.ui.internal.Workbench$5.run() line: 500 org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.observable.Realm, java.lang.Runnable) line: 332 org.eclipse.ui.internal.Workbench.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 493 org.eclipse.ui.PlatformUI.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 149 org.eclipse.ui.internal.ide.application.IDEApplication.start(org.eclipse.equinox.app.IApplicationContext) line: 113 org.eclipse.equinox.internal.app.EclipseAppHandle.run(java.lang.Object) line: 194 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(java.lang.Object) line: 110 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(java.lang.Object) line: 79 org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.Object) line: 368 org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.String[], java.lang.Runnable) line: 179 sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method] sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 39 sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25 java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 597 org.eclipse.equinox.launcher.Main.invokeFramework(java.lang.String[], java.net.URL[]) line: 559 org.eclipse.equinox.launcher.Main.basicRun(java.lang.String[]) line: 514 org.eclipse.equinox.launcher.Main.run(java.lang.String[]) line: 1311 org.eclipse.equinox.launcher.Main.main(java.lang.String[]) line: 1287 Reproducible: Always
Dan, can you please take a look whenever you get a chance? Thanks!
Created attachment 177481 [details] patch_321140.txt My fix is to not call a super.dispose method. Is this safe? After tracking down the instances I believe that another object was calling the dispose method of the parent class, so not calling it in the child should be ok. I really don't know the details enough to know if this is the correct solution, but it does seem to work. Variables I watched to come to this conclusion: JavaNavigatorContentProvider.java: fStateModel PackageExplorerLabelProvider.java: fContentProvider Class Changed: TigerstripeContentProvider
Thanks Dan! Sorry, but I'm a bit hesitant to apply your patch. JavaNavigatorContentProvider is an internal class that we shouldn't be sub-classing in the first place. I suspect that this will go away when bug#317761 is completed. Having the NPE there causes a bit of annoyance when debugging TS code (with an exception breakpoint enabled), but other than that, I don't think it causes any major problems on our side. I'm going to mark this defect as WONTFIX. It'll be resolved once bug#317761 is completed.