Closed
Bug 459539
Opened 16 years ago
Closed 16 years ago
TM: crash growing innermost trees from outer trees
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: dvander, Assigned: gal)
References
Details
Attachments
(2 files, 1 obsolete file)
970 bytes,
text/plain
|
Details | |
13.69 KB,
patch
|
Details | Diff | Splinter Review |
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.
Assignee | ||
Comment 1•16 years ago
|
||
Also hits before the thin loop patch, so thin loops are likely not directly contributing.
![]() |
Reporter | |
Comment 2•16 years ago
|
||
Assignee | ||
Comment 3•16 years ago
|
||
Attachment #342818 -
Attachment is obsolete: true
Assignee | ||
Updated•16 years ago
|
Assignee: general → gal
Assignee | ||
Comment 4•16 years ago
|
||
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Comment 5•16 years ago
|
||
/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.
Description
•