Community
Participate
Working Groups
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)
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)
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.