Closed Bug 459539 Opened 16 years ago Closed 16 years ago

TM: crash growing innermost trees from outer trees

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: dvander, Assigned: gal)

References

Details

Attachments

(2 files, 1 obsolete file)

Attached file test case that bombs
Multi-trees is currently in a chaotic state because I was hitting this crash in crypto-aes. It took long enough but I've managed to reduce it to a test case that crashes on tip. It never appeared before because we didn't trace as much. The test case just exploits a particular control flow that nested trees gets wrong. 1. Innermost loop gets compiled. Then it takes a branch, and we compile that branch _as a thin loop_. 2. Inner loop (middle) gets compiled expecting the innermost loop to not branch. 3. Outer loop gets compiled. 4. Outer loop gets run such that the innermost loop takes its thin branch. When the guard chain bubbles back up to js_Execute, the immediate GuardRecord has a calldepth=1. We skip past this and never process its call depth or exit, which leads to the good ol' assertion: "Assertion failure: script->main <= target && target < script->code + script->length, at jsopcode.cpp:5197" If the innermost branch is not thin, this assertion is not hit.
Also hits before the thin loop patch, so thin loops are likely not directly contributing.
Attachment #342818 - Attachment is obsolete: true
Assignee: general → gal
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
/cvsroot/mozilla/js/tests/js1_8_1/trace/trace-test.js,v <-- trace-test.js new revision: 1.5; previous revision: 1.4 http://hg.mozilla.org/mozilla-central/rev/f0e9fd501e63
Flags: in-testsuite+
Flags: in-litmus-
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: