Menu

#76 In Debugger Expressions view crashes on numeric property name

Fixed
nobody
None
Medium
Defect
2012-10-04
2012-09-12
Anonymous
No

Originally created by: peter.ry...@gmail.com
Originally owned by: peter.ry...@gmail.com

SDK/Debugger version: 0.3.6
Google Chrome/V8 Embedder + version: Node.JS

What steps will reproduce the problem?
1. In Expressions view add "({ "3302611133": 1,  "8302611133" : 3 })" and have it evaluated.
2. Expand properties.

What is the expected result?
2 properties are displayed.

What happens instead?
Expressions view crashes.

Please provide additional information below. If possible, attach a
(reduced) test-case.
java.lang.NumberFormatException: For input string: "3302611133"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:484)
    at java.lang.Integer.valueOf(Integer.java:570)
    at org.chromium.debug.core.model.StackFrame$1.getNameObject(StackFrame.java:228)
    at org.chromium.debug.core.model.StackFrame$1.compare(StackFrame.java:221)
    at org.chromium.debug.core.model.StackFrame$1.compare(StackFrame.java:1)
    at java.util.TimSort.countRunAndMakeAscending(TimSort.java:324)
    at java.util.TimSort.sort(TimSort.java:189)
    at java.util.TimSort.sort(TimSort.java:173)
    at java.util.Arrays.sort(Arrays.java:1347)
    at java.util.Collections.sort(Collections.java:217)
    at org.chromium.debug.core.model.StackFrame.wrapVariables(StackFrame.java:88)
    at org.chromium.debug.core.model.Value.calculateVariables(Value.java:73)
    at org.chromium.debug.core.model.ValueBase$ValueWithLazyVariables.getVariables(ValueBase.java:81)
    at org.eclipse.debug.internal.ui.model.elements.VariableContentProvider.getValueChildren(VariableContentProvider.java:166)
    at org.eclipse.debug.internal.ui.model.elements.ExpressionContentProvider.getAllChildren(ExpressionContentProvider.java:193)
    at org.eclipse.debug.internal.ui.model.elements.VariableContentProvider.getChildCount(VariableContentProvider.java:48)
    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)

Related

Tickets: #75

Discussion

  • Anonymous

    Anonymous - 2012-09-12

    Originally posted by: redsandro

    I think, since the "strings" are parsed as [numbers], the object might get parsed as array, and the few billion indices between the numbers get assigned 'undefined' automatically, as this is how arrays internally work (and was the reason for using objects in stead of arrays in the first place, which lead to my original bugreport).

     
  • Anonymous

    Anonymous - 2012-09-12

    Originally posted by: peter.ry...@gmail.com

    Sander,
    could you please expand your last comment. Particularly, what "parsed as array" means.
    Peter

     
  • Anonymous

    Anonymous - 2012-09-12

    Originally posted by: redsandro

    I have seen this behavior in a NodeJS app I am working on. NodeJS is build on V8. In NodeJS/javascript, when you define an array with two big integers as key like so:

    var ar = [];
    ar[1000000000] = 1;
    ar[3302611133] = 3;

    internally, all keys in between are set in memory like so:

    ar[1000000000] = 1;
    ar[1000000001] = undefined;
    // ...
    ar[3302611132] = undefined;
    ar[3302611133] = 3;

    You won't see this in the Variables Explorer, but memory will fill and the V8 (nodejs) application will crash.

    This looks a lot like what happens if you use an {object} in the way described by this bug, as long as you use numbers (as string) that are parsed as integers like in bug #77.

    Except, this bug with the object only happens in the Variables Explorer or the Expressions View in Eclipse, not in the actual NodeJS program. Hence, it feels like - on the devtools side of things - the object is internally somehow converted to array which causes the crash.

    I hope this makes more sense.

     

    Related

    Tickets: #77

  • Anonymous

    Anonymous - 2012-09-12

    Originally posted by: redsandro

    As if the Variables panel or Expressions panel run out of reserved memory and crash, just like the app does with arrays.

     
  • Anonymous

    Anonymous - 2012-09-12

    Originally posted by: peter.ry...@gmail.com

    Oh, I see. It's a good guess, but in fact it's unrelated. It's just a slightly inaccurate code in Debugger, the fix is ready and soon will be landed: http://codereview.chromium.org/10913231/

     
  • Anonymous

    Anonymous - 2012-10-04

    Originally posted by: peter.ry...@gmail.com

    Fixed in 0.3.8

    Status: Fixed

     

Log in to post a comment.

MongoDB Logo MongoDB