Closed Bug 781071 Opened 12 years ago Closed 12 years ago

Crash [@ ExpressionDecompiler::findLetVar] or "Assertion failure: isObject(),"

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
critical

Tracking

()

VERIFIED FIXED
mozilla17

People

(Reporter: gkw, Assigned: Benjamin)

References

Details

(4 keywords)

Crash Data

Attachments

(2 files)

Attached file stack
{
  let[[l]] = [[].watch(0, function() {})]
}

asserts js debug shell on m-c changeset 602c2e7ee0d2 without any CLI argument at Assertion failure: isObject(), and crashes opt shell at ExpressionDecompiler::findLetVar

This seems like a null crash.

autoBisect shows this is probably related to the following changeset:

The first bad revision is:
changeset:   101243:7852a8f73313
user:        Benjamin Peterson
date:        Thu Aug 02 09:20:08 2012 -0700
summary:     Bug 767274: New expression decompiler. r=luke
Assignee: general → bpeterson
Attachment #649934 - Flags: review?(luke)
Why doesn't findLetVar find the let var?  It seems like it should.  I see that the loop doesn't return if !JSID_IS_ATOM(shape.propid()), even though the property at the correct depth is found: perhaps that should return emptyAtom?  Regardless, I don't see empty destructuring let in the example, so there seems to be some other problem...
Having some shape where !JSID_IS_ATOM(shape.propid()) is sufficient but not necessary condition to having a destructing temporary.
Attachment #649934 - Flags: review?(luke) → review+
(From IRL: GETLOCAL(i) where i > nfixed does not a let-variable-access make, sometimes we emit GETLOCAL to access expression temporaries who have no variable name.)
https://hg.mozilla.org/mozilla-central/rev/abbb9f6d48dd
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla17
A test was landed into the testsuite. -> VERIFIED
Status: RESOLVED → VERIFIED
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: