Bug 322818 - NPE from label update job and detail job
Summary: NPE from label update job and detail job
Status: ASSIGNED
Alias: None
Product: JSDT
Classification: WebTools
Component: Debug (show other bugs)
Version: 3.2   Edit
Hardware: All All
: P3 major (vote)
Target Milestone: Future   Edit
Assignee: Michael Rennie CLA
QA Contact: Simon Kaegi CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-08-16 12:59 EDT by Michael Rennie CLA
Modified: 2011-05-25 21:01 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Rennie CLA 2010-08-16 12:59:51 EDT
code from HEAD

If you are debugging and a packet happens to time-out retrieving an underlying value for a property we do not check for this case when we ask for the value string.

Stack trace:

java.lang.NullPointerException
at org.eclipse.wst.jsdt.debug.internal.core.model.JavaScriptValue.getValueString(JavaScriptValue.java:164)
at org.eclipse.wst.jsdt.debug.internal.core.model.JavaScriptValue.getValueString(JavaScriptValue.java:139)
at org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getValueText(VariableLabelProvider.java:166)
at org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getColumnText(VariableLabelProvider.java:112)
at org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getLabel(VariableLabelProvider.java:92)
at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider.getLabel(ElementLabelProvider.java:312)
at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider.retrieveLabel(ElementLabelProvider.java:215)
at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider$LabelUpdater.run(ElementLabelProvider.java:160)
at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider$LabelJob.run(ElementLabelProvider.java:74)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

This is also a problem if Rhino times out getting the detail string:

java.lang.NullPointerException
at org.eclipse.wst.jsdt.debug.internal.core.model.JavaScriptValue.getDetailString(JavaScriptValue.java:101)
at org.eclipse.wst.jsdt.debug.internal.ui.JavaScriptModelPresentation.computeDetail(JavaScriptModelPresentation.java:90)
at org.eclipse.debug.internal.ui.LazyModelPresentation.computeDetail(LazyModelPresentation.java:230)
at org.eclipse.debug.internal.ui.DelegatingModelPresentation.computeDetail(DelegatingModelPresentation.java:206)
at org.eclipse.debug.internal.ui.views.variables.details.DefaultDetailPane$DetailJob.run(DefaultDetailPane.java:228)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Comment 1 Michael Rennie CLA 2010-08-16 13:01:29 EDT
I'm not entirely sure what we should be doing in the time-out case, as Rhino is extremely intolerant to continuing execution after a timeout. We can guard against these failures, but the variables view will be filled with a pile of vars that are all null, with null values, null types and null details (not at all useful)
Comment 2 Michael Rennie CLA 2010-08-16 13:02:39 EDT
a quick test of guarding against the other failures just pushed the NPE to another locale:

java.lang.NullPointerException
at org.eclipse.wst.jsdt.debug.internal.core.model.JavaScriptStackFrame.getVariables(JavaScriptStackFrame.java:141)
at org.eclipse.debug.internal.ui.model.elements.StackFrameContentProvider.getAllChildren(StackFrameContentProvider.java:51)
at org.eclipse.debug.internal.ui.model.elements.StackFrameContentProvider.getChildCount(StackFrameContentProvider.java:28)
at org.eclipse.debug.internal.ui.model.elements.ElementContentProvider.retrieveChildCount(ElementContentProvider.java:114)
at org.eclipse.debug.internal.ui.model.elements.ElementContentProvider$2.run(ElementContentProvider.java:63)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

We need to look at making Rhino more resilient to timeouts.