Bug 32734 - NPE while viewing variables from debugger
Summary: NPE while viewing variables from debugger
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows XP
: P1 critical (vote)
Target Milestone: 2.1 RC2   Edit
Assignee: Christophe Cornu CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 32532 33430 (view as bug list)
Depends on:
Blocks:
 
Reported: 2003-02-24 13:03 EST by Veronika Irvine CLA
Modified: 2003-03-06 09:52 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Veronika Irvine CLA 2003-02-24 13:03:47 EST
I200302211557
Windows XP with "Z" skin

!ENTRY org.eclipse.ui 4 4 Feb 24, 2003 13:03:05.918
!MESSAGE 
*** Stack trace of contained exception ***
!ENTRY org.eclipse.ui 4 0 Feb 24, 2003 13:03:05.918
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
	at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java(Compiled Code))
	at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Control.windowProc(Control.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Display.windowProc(Display.java(Compiled 
Code))
	at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
	at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java(Compiled Code))
	at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java(Compiled Code))
	at org.eclipse.swt.widgets.Control.windowProc(Control.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Display.windowProc(Display.java(Compiled 
Code))
	at org.eclipse.swt.internal.win32.OS.RedrawWindow(Native Method)
	at org.eclipse.swt.widgets.Control.update(Control.java:2687)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java(Compiled 
Code))
	at org.eclipse.jface.window.Window.runEventLoop(Window.java(Compiled 
Code))
	at org.eclipse.jface.window.Window.open(Window.java:557)
	at org.eclipse.jface.dialogs.MessageDialog.openError
(MessageDialog.java:279)
	at org.eclipse.jface.util.SafeRunnable.handleException
(SafeRunnable.java:42)
	at org.eclipse.jface.viewers.Viewer$2.handleException(Viewer.java:156)
	at org.eclipse.core.internal.runtime.InternalPlatform.handleException
(InternalPlatform.java:448)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java(Compiled Code))
	at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java
(Compiled Code))
	at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java
(Compiled Code))
	at org.eclipse.jface.viewers.StructuredViewer.updateSelection
(StructuredViewer.java:1287)
	at org.eclipse.jface.viewers.StructuredViewer.handleInvalidSelection
(StructuredViewer.java:622)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection
(StructuredViewer.java:810)
	at org.eclipse.jface.viewers.AbstractTreeViewer.remove
(AbstractTreeViewer.java:1049)
	at org.eclipse.jface.viewers.AbstractTreeViewer.remove
(AbstractTreeViewer.java:1069)
	at org.eclipse.debug.internal.ui.views.AbstractDebugEventHandler.remove
(AbstractDebugEventHandler.java:110)
	at 
org.eclipse.debug.internal.ui.views.launch.LaunchViewEventHandler.doHandleDebugE
vents(LaunchViewEventHandler.java:84)
	at org.eclipse.debug.internal.ui.views.AbstractDebugEventHandler$1.run
(AbstractDebugEventHandler.java:65)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java(Compiled 
Code))
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages
(Synchronizer.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java
(Compiled Code))
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java
(Compiled Code))
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java
(Compiled Code))
	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)
Comment 1 Veronika Irvine CLA 2003-02-24 13:11:13 EST
*** Bug 32532 has been marked as a duplicate of this bug. ***
Comment 2 Veronika Irvine CLA 2003-02-27 10:58:51 EST
*** Bug 33430 has been marked as a duplicate of this bug. ***
Comment 3 Christophe Cornu CLA 2003-02-27 16:13:08 EST
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)
Comment 4 Christophe Cornu CLA 2003-02-27 18:27:16 EST
Fixed in version v>20030227
Comment 5 Christof Marti CLA 2003-03-06 06:39:51 EST
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)
Comment 6 Veronika Irvine CLA 2003-03-06 09:52:55 EST
SWT did not make a contribution to Tuesday's build.  Please try with RC2.