Closed Bug 474935 Opened 16 years ago Closed 16 years ago

TM: "Assertion failure: !ti->typeMap.matches(ti_other->typeMap)" with global, large array

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect
Not set
critical

Tracking

()

VERIFIED FIXED

People

(Reporter: jruderman, Assigned: dvander)

Details

(4 keywords)

Attachments

(1 file)

var a = ["", 0, 0, 0, 0, 0, "", "", 0, "", 0, ""];
var i = 0;
var g = 0;
for each (let e in a) {
    "" + [e];
    if (i == 3 || i == 7) {
        for each (g in [1]) {
        }
    }
    ++i;
}

Assertion failure: !ti->typeMap.matches(ti_other->typeMap), at ../jstracer.cpp:3110
Assignee: general → danderson
Attached patch proposed fixSplinter Review
This bug occurred because a piece of the joinEdgesToEntry logic (which is somewhat duplicated in js_AttemptToStabilizeTree) was missing.  If an unstable exit has an integer in its typemap while a peer has a double, and that slot is undemotable, the original tree should be trashed and js_RecordTree should not be called.

This faults in a standalone file but I can't seem to replicate the conditions in trace-tests.
Attachment #358526 - Flags: review?(gal)
Comment on attachment 358526 [details] [diff] [review]
proposed fix

Did you test perf? I hope SS doesn't hit this case.
Attachment #358526 - Flags: review?(gal) → review+
No perf change, so pushed as changeset: http://hg.mozilla.org/tracemonkey/rev/e6c5ad00591d
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
http://hg.mozilla.org/mozilla-central/rev/d52de3f35735
/cvsroot/mozilla/js/tests/js1_8/regress/regress-474935.js,v  <--  regress-474935.js
initial revision: 1.1
Flags: in-testsuite+
Flags: in-litmus-
v 1.9.1, 1.9.2
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: