Summary: | NPE while viewing variables from debugger | ||
---|---|---|---|
Product: | [Eclipse Project] Platform | Reporter: | Veronika Irvine <veronika_irvine> |
Component: | SWT | Assignee: | Christophe Cornu <christophe.cornu+eclipse> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | critical | ||
Priority: | P1 | CC: | chm, Darin_Swanson |
Version: | 2.1 | ||
Target Milestone: | 2.1 RC2 | ||
Hardware: | PC | ||
OS: | Windows XP | ||
Whiteboard: |
Description
Veronika Irvine
2003-02-24 13:03:47 EST
*** Bug 32532 has been marked as a duplicate of this bug. *** *** Bug 33430 has been marked as a duplicate of this bug. *** Internal note: About the stack trace in bug 32532 Tree.destroyItem clears up the list of items [1] and later destroys the OS item [2]. In between we turn off the drawing. For some reason, this WM_SETREDRAW off caused a wmNotify trying to access the list of items[] previously cleaned. This causes the NPE. I have a reproducible test case with the following NPE: In this case, the wmNotifyChild is generated after the OS tree item has been created and before the list of items been assigned the newly created item. java.lang.Exception: Stack trace at java.lang.Thread.dumpStack(Thread.java:1021) at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:1839) at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:3774) at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java:638) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2810) at org.eclipse.swt.widgets.Display.windowProc(Display.java:2281) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1227) at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:152) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2839) at org.eclipse.swt.widgets.Display.windowProc(Display.java:2281) at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:1831) at org.eclipse.swt.widgets.Tree.createItem(Tree.java:247) at org.eclipse.swt.widgets.TreeItem.<init>(TreeItem.java:115) NPE! lItemlParam: 3 at org.eclipse.jface.viewers.TreeViewer.newItem(TreeViewer.java:190) at org.eclipse.debug.internal.ui.views.variables.VariablesViewer.newItem (VariablesViewer.java:77) at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren (AbstractTreeViewer.java:1358) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh (AbstractTreeViewer.java:925) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh (AbstractTreeViewer.java:895) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh (AbstractTreeViewer.java:881) at org.eclipse.jface.viewers.StructuredViewer$7.run (StructuredViewer.java:859) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection (StructuredViewer.java:799) at org.eclipse.jface.viewers.StructuredViewer.refresh (StructuredViewer.java:857) at org.eclipse.jface.viewers.StructuredViewer.refresh (StructuredViewer.java:819) at org.eclipse.debug.internal.ui.views.variables.VariablesViewer.refresh (VariablesViewer.java:60) at org.eclipse.debug.internal.ui.views.AbstractDebugEventHandler.refresh (AbstractDebugEventHandler.java:140) at org.eclipse.debug.internal.ui.views.variables.VariablesViewEventHandler.doHandleS uspendEvent(VariablesViewEventHandler.java:86) at org.eclipse.debug.internal.ui.views.variables.VariablesViewEventHandler.doHandleD ebugEvents(VariablesViewEventHandler.java:40) at org.eclipse.debug.internal.ui.views.AbstractDebugEventHandler$1.run (AbstractDebugEventHandler.java:65) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:31) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages (Synchronizer.java:94) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:1752) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1487) at org.eclipse.ui.internal.Workbench.runEventLoop (Workbench.java:1271) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1254) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:845) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.launcher.Main.basicRun(Main.java:247) at org.eclipse.core.launcher.Main.run(Main.java:703) at org.eclipse.core.launcher.Main.main(Main.java:539) Fixed in version v>20030227 I found the appended exception in my .log running on I200303041402: !ENTRY org.eclipse.ui 4 4 Mar 06, 2003 11:30:07.582 !MESSAGE Unhandled exception caught in event loop. !ENTRY org.eclipse.ui 4 0 Mar 06, 2003 11:30:07.592 !MESSAGE Failed to execute runnable (java.lang.NullPointerException) !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException) at org.eclipse.swt.SWT.error(SWT.java:2316) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:97) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:1752) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1487) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1268) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1251) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:845) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) 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:247) at org.eclipse.core.launcher.Main.run(Main.java:703) at org.eclipse.core.launcher.Main.main(Main.java:539) !ENTRY org.eclipse.ui 4 4 Mar 06, 2003 11:30:07.652 !MESSAGE *** Stack trace of contained exception *** !ENTRY org.eclipse.ui 4 0 Mar 06, 2003 11:30:07.662 !MESSAGE java.lang.NullPointerException !STACK 0 java.lang.NullPointerException at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:1788) at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:3774) at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java:638) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2810) at org.eclipse.swt.widgets.Display.windowProc(Display.java:2281) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1227) at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:152) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2839) at org.eclipse.swt.widgets.Display.windowProc(Display.java:2281) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1227) at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:152) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2839) at org.eclipse.swt.widgets.Display.windowProc(Display.java:2281) at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:1776) at org.eclipse.swt.widgets.Tree.destroyItem(Tree.java:337) at org.eclipse.swt.widgets.TreeItem.releaseChild(TreeItem.java:470) at org.eclipse.swt.widgets.Widget.dispose(Widget.java:367) at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:1369) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:960) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:967) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:940) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:911) at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:897) at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:861) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:801) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:859) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:821) at org.eclipse.ui.externaltools.internal.ant.editor.outline.PlantyContentOutlinePage$4.run(PlantyContentOutlinePage.java:386) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:31) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:94) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:1752) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1487) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1268) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1251) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:845) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) 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:247) at org.eclipse.core.launcher.Main.run(Main.java:703) at org.eclipse.core.launcher.Main.main(Main.java:539) SWT did not make a contribution to Tuesday's build. Please try with RC2. |