Closed Bug 773927 Opened 12 years ago Closed 12 years ago

"Assertion failure: dn->isClosed(),"

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla17

People

(Reporter: gkw, Assigned: luke)

References

Details

(Keywords: assertion, regression, testcase)

Attachments

(2 files)

Attached file stack
(function() {x})
((function() {x}) for (x in 2))

asserts js debug shell on m-c changeset 32c911bc2579 without any CLI arguments, but only when the testcase is passed in as a CLI parameter at Assertion failure: dn->isClosed(),

autoBisect shows this is probably related to the following changeset:

The first bad revision is:
changeset:   99089:b790407d394f
user:        Luke Wagner
date:        Thu Jul 05 20:29:24 2012 -0700
summary:     Bug 771039 - assert some invariants in BindNameToSlot (r=dvander)
Attached patch fix and testSplinter Review
More pre-existing bugs in the genexpr CompExprTransplanter code:

So, before we know this is a genexpr, both (function() {x}) lambdas have finished parsing and share the same placeholder binding node in the enclosing (global) scope.  Then we see the second statement is a genexpr so we must transplant the use of 'x' to have a new placeholder.  To do this we make a new placeholder, but we lose the fact that the old placeholder was aliased so that when we convert the placeholder to a real binding (the 'x' in for(x in [0,1])), the definition isn't marked as closed.
Assignee: general → luke
Status: NEW → ASSIGNED
Attachment #642673 - Flags: review?(dvander)
Attachment #642673 - Flags: review?(dvander) → review+
https://hg.mozilla.org/mozilla-central/rev/2958d924acc6
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
A testcase for this bug was automatically identified at js/src/jit-test/tests/basic/testBug773927.js.
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: