SWT "Widget is disposed" when closing Deployment Editor
Analysis:
- The bug might be related to the static declaration of
componentArchitectureViewer
inorg.fortiss.af3.deployment.ui.editor.DeploymentEditorBackend
introduced in r12758. - See stack trace below
Steps to reproduce
- Development Eclipse
- Run Menu ->Add Java Exception Breakpoint for
SWTException
- Run Menu ->Add Java Exception Breakpoint for
- AF3/Phoenix
- Ensure that annotation view is active
- Open ACC example
- Add 2nd and 3rd Deployment node
- Save Project
- Close and restart AF3/Phoenix
- Open all three deployments (note the “flickering” of the component tree view)
- Start to close deployments
Stack Trace
Thread [main] (Suspended (exception SWTException))
SWT.error(int, Throwable, String) line: 4399
SWT.error(int, Throwable) line: 4312
SWT.error(int) line: 4283
Tree(Widget).error(int) line: 472
Tree(Widget).checkWidget() line: 344
Tree.getItemCount() line: 3203
TreeViewer.getItemCount(Control) line: 215
TreeViewer(AbstractTreeViewer).updateChildren(Widget, Object, Object[], boolean) line: 2654
TreeViewer(AbstractTreeViewer).internalRefreshStruct(Widget, Object, boolean) line: 1923
TreeViewer.internalRefreshStruct(Widget, Object, boolean) line: 721
TreeViewer(AbstractTreeViewer).internalRefresh(Widget, Object, boolean, boolean) line: 1898
TreeViewer(AbstractTreeViewer).internalRefresh(Object, boolean) line: 1848
TreeViewer(AbstractTreeViewer).internalRefresh(Object) line: 1841
StructuredViewer$7.run() line: 1508
TreeViewer(StructuredViewer).preservingSelection(Runnable, boolean) line: 1443
TreeViewer.preservingSelection(Runnable, boolean) line: 403
TreeViewer(StructuredViewer).preservingSelection(Runnable) line: 1404
TreeViewer(StructuredViewer).refresh(Object) line: 1506
TreeViewer(ColumnViewer).refresh(Object) line: 544
TreeViewer(StructuredViewer).refresh() line: 1465
DeploymentGEFEditorBase$3.focusGained(FocusEvent) line: 203
TypedListener.handleEvent(Event) line: 139
EventTable.sendEvent(Event) line: 84
FigureCanvas(Widget).sendEvent(Event) line: 1057
FigureCanvas(Widget).sendEvent(int, Event, boolean) line: 1081
FigureCanvas(Widget).sendEvent(int) line: 1062
FigureCanvas(Control).sendFocusEvent(int) line: 2842
FigureCanvas(Widget).wmSetFocus(long, long, long) line: 2421
FigureCanvas(Control).WM_SETFOCUS(long, long) line: 5235
FigureCanvas(Canvas).WM_SETFOCUS(long, long) line: 457
FigureCanvas(Control).windowProc(long, int, long, long) line: 4681
FigureCanvas(Canvas).windowProc(long, int, long, long) line: 340
Display.windowProc(long, long, long, long) line: 4977
OS.SetFocus(long) line: not available [native method]
FigureCanvas(Control).forceFocus() line: 1098
FigureCanvas(Control).setFocus() line: 3323
FigureCanvas(Composite).setFocus() line: 1042
DeploymentEditorBackend(DeploymentGEFEditorBase).setFocus() line: 325
ExtendableMultiPageEditor(MultiPageEditorPart).setFocus(int) line: 1126
ExtendableMultiPageEditor(MultiPageEditorPart).setFocus() line: 1108
CompatibilityEditor(CompatibilityPart).delegateSetFocus() line: 192
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available
Method.invoke(Object, Object...) line: not available
MethodRequestor.execute() line: 56
InjectorImpl.invokeUsingClass(Object, Class<?>, Class<Annotation>, Object, PrimaryObjectSupplier, PrimaryObjectSupplier, boolean) line: 243
InjectorImpl.invokeUsingClass(Object, Class<?>, Class<Annotation>, Object, PrimaryObjectSupplier, PrimaryObjectSupplier, boolean) line: 249
InjectorImpl.invoke(Object, Class<Annotation>, Object, PrimaryObjectSupplier) line: 220
ContextInjectionFactory.invoke(Object, Class<Annotation>, IEclipseContext, Object) line: 107
PartRenderingEngine.focusGui(MUIElement) line: 763
ContributedPartRenderer$2.setFocus() line: 102
CTabItem.setFocus() line: 329
CTabFolder.setFocus() line: 2528
ContributedPartRenderer$2(Control).fixFocus(Control) line: 1053
ContributedPartRenderer$2(Control).setVisible(boolean) line: 3819
CTabFolder.setSelection(int) line: 3068
CTabFolder.setSelection(CTabItem) line: 3025
StackRenderer.showTab(MUIElement) line: 1157
LazyStackRenderer$1.handleEvent(Event) line: 65
UIEventHandler$1.run() line: 41
UISynchronizer(Synchronizer).syncExec(Runnable) line: 180
UISynchronizer.syncExec(Runnable) line: 150
Display.syncExec(Runnable) line: 4688
E4Application$1.syncExec(Runnable) line: 205
UIEventHandler.handleEvent(Event) line: 38
EventHandlerWrapper.handleEvent(Event, Permission) line: 197
EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) line: 197
EventHandlerTracker.dispatchEvent(Object, Object, int, Object) line: 1
EventManager.dispatchEvent(Set<Entry<K,V>>, EventDispatcher<K,V,E>, int, E) line: 230
ListenerQueue<K,V,E>.dispatchEventSynchronous(int, E) line: 148
EventAdminImpl.dispatchEvent(Event, boolean) line: 135
EventAdminImpl.sendEvent(Event) line: 78
EventComponent.sendEvent(Event) line: 39
EventBroker.send(String, Object) line: 80
UIEventPublisher.notifyChanged(Notification) line: 58
PartStackImpl(BasicNotifierImpl).eNotify(Notification) line: 374
PartStackImpl(ElementContainerImpl<T>).setSelectedElement(T) line: 171
PartServiceImpl.hidePart(MPart, boolean) line: 1155
PartServiceImpl.hidePart(MPart) line: 1113
StackRenderer.closePart(Widget, boolean) line: 1120
StackRenderer.access$5(StackRenderer, Widget, boolean) line: 1102
StackRenderer$12.close(CTabFolderEvent) line: 996
CTabFolder.onMouse(Event) line: 1852
CTabFolder$1.handleEvent(Event) line: 284
EventTable.sendEvent(Event) line: 84
CTabFolder(Widget).sendEvent(Event) line: 1057
Display.runDeferredEvents() line: 4170
Display.readAndDispatch() line: 3759
PartRenderingEngine$9.run() line: 1113
Realm.runWithDefault(Realm, Runnable) line: 332
PartRenderingEngine.run(MApplicationElement, IEclipseContext) line: 997
E4Workbench.createAndRunUI(MApplicationElement) line: 140
Workbench$5.run() line: 611
Realm.runWithDefault(Realm, Runnable) line: 332
Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 567
PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 150
AF3Application.start(IApplicationContext) line: 49
EclipseAppHandle.run(Object) line: 196
EclipseAppLauncher.runApplication(Object) line: 110
EclipseAppLauncher.start(Object) line: 79
EclipseStarter.run(Object) line: 354
EclipseStarter.run(String[], Runnable) line: 181
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available
Method.invoke(Object, Object...) line: not available
Main.invokeFramework(String[], URL[]) line: 636
Main.basicRun(String[]) line: 591
Main.run(String[]) line: 1450
Main.main(String[]) line: 1426
(from redmine: issue id 2511, created on 2016-03-07, closed on 2016-03-09)