Perma [tier2] tests/jit-test/jit-test/tests/gc/pretenuring.js | /data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9 Error: Assertion failed: got true, expected false (code 3, args "") [0.5 s]
Categories
(Core :: JavaScript: GC, defect, P5)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr78 | --- | unaffected |
firefox83 | --- | unaffected |
firefox84 | --- | unaffected |
firefox85 | --- | fixed |
firefox86 | --- | fixed |
People
(Reporter: intermittent-bug-filer, Assigned: allstars.chh)
References
(Regression)
Details
(Keywords: assertion, intermittent-failure, regression, Whiteboard: [retriggered][stockwell needswork:owner])
Attachments
(1 file, 1 obsolete file)
47 bytes,
text/x-phabricator-request
|
jcristau
:
approval-mozilla-beta+
|
Details | Review |
Filed by: abutkovits [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=324156015&repo=autoland
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/Ez8jlak4SESdoXV-xy1n-w/runs/0/artifacts/public/logs/live_backing.log
[task 2020-12-10T15:02:24.870Z] 15:02:23 INFO - TEST-PASS | tests/jit-test/jit-test/tests/gc/oomInWeakMap.js | Success (code 59, args "--baseline-eager") [0.4 s]
[task 2020-12-10T15:02:24.870Z] 15:02:23 INFO - TEST-PASS | tests/jit-test/jit-test/tests/gc/oomInWeakMap.js | Success (code 59, args "--no-blinterp --no-baseline --no-ion --more-compartments") [0.3 s]
[task 2020-12-10T15:02:24.870Z] 15:02:23 INFO - TEST-PASS | tests/jit-test/jit-test/tests/gc/oomInWeakMap.js | Success (code 59, args "--blinterp-eager") [0.4 s]
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - /data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9 Error: Assertion failed: got true, expected false
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - Stack:
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - @/data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9/data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9 Error: Assertion failed: got true, expected false
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - Stack:
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - @/data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9Exit code: 3
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - FAIL - gc/pretenuring.js
[task 2020-12-10T15:02:24.870Z] 15:02:24 WARNING - TEST-UNEXPECTED-FAIL | tests/jit-test/jit-test/tests/gc/pretenuring.js | /data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9 Error: Assertion failed: got true, expected false (code 3, args "") [0.5 s]
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - INFO exit-status : 3
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - INFO timed-out : False
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - INFO stdout > /data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9 Error: Assertion failed: got true, expected false
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - INFO stdout > Stack:
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - INFO stdout > @/data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9
[task 2020-12-10T15:02:24.870Z] 15:02:24 INFO - INFO stderr 2> /data/local/tmp/test_root/tests/tests/tests/gc/pretenuring.js:32:9 Error: Assertion failed: got true, expected false```
Comment 1•4 years ago
|
||
Jon please have a look over this tier2 permafailure from https://hg.mozilla.org/mozilla-central/rev/4d7255296684f147ec51578703f725fc242a24a6
Thank you.
Assignee | ||
Updated•4 years ago
|
Comment 2•4 years ago
|
||
Set release status flags based on info from the regressing bug 1681693
Comment hidden (Intermittent Failures Robot) |
Updated•4 years ago
|
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 5•4 years ago
|
||
The test fails on Android because of :
- the validForTenuring is false.
https://searchfox.org/mozilla-central/rev/97dd1934d16cada69dbf68e9cda9e9a017459e9e/js/src/gc/Nursery.cpp#756
The value from used/capacity is roughly 0.87
- nursery.usedBytes is smaller than 4MB
https://searchfox.org/mozilla-central/rev/97dd1934d16cada69dbf68e9cda9e9a017459e9e/js/src/gc/Nursery.cpp#1196
The 4MB value is from https://bugzilla.mozilla.org/show_bug.cgi?id=1497873#c10
But on Android the max nursery bytes is at most 4MB as well
https://searchfox.org/mozilla-central/rev/97dd1934d16cada69dbf68e9cda9e9a017459e9e/modules/libpref/init/all.js#1148
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 7•4 years ago
|
||
Assignee | ||
Comment 8•4 years ago
|
||
Assignee | ||
Comment 9•4 years ago
|
||
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 11•4 years ago
•
|
||
It turns out changing the validForPretenuring is unnecessary.
The last minor GC is triggered by the test itself, and the nursery is not full yet (explained below), so validForPretenuring doesn't become true.
But it should have disabled nursery strings earlier, it failed to do so because of the 4MB limit of nursery used bytes.
https://searchfox.org/mozilla-central/rev/c7cf087b6e1384608ca3989f042f12f7cabd0a5f/js/src/gc/Nursery.cpp#1196
And the reason why the nursery isn't full, is the tests has 500,000 strings.
The nursery starts with 0x40000 capacity, which holds 7836 strings
then increase the capacity to 0x80000, which holds 16382 strings.
then 0x100000 capacity, -> 32764 strings
0x20000 capacity, 65528 strings
0x40000 capacity, 131056 strings
0x40000 capacity (already hits the max nursery size), 131056 strings.
7836 + 16382 + 32764 + 65528 + 131056 + 131056 = 384622.
The next round of minor Gc will hold (500000 - 384622) around 115000 strings, each string takes 32 bytes => 3680000 bytes, (0x382700 bytes) which are around 87% of the nursery capacity(0x400000).
But if we change the 4MB limit to 3MB(https://phabricator.services.mozilla.com/D99868), the string pretenuring could happen in the 5th round of minor GC.
Talos link: (doesn't include the -qr platforms as it takes longer to run)
https://treeherder.mozilla.org/perfherder/compare?originalProject=mozilla-central&originalRevision=91a89ecd1d3a9f83a61549a1aaaf469b4746f301&newProject=try&newRevision=7dd176e18f17da133e55a13d4a1c7665d0755f64+&framework=1
Updated•4 years ago
|
Updated•4 years ago
|
Comment 12•4 years ago
|
||
Comment 13•4 years ago
|
||
bugherder |
Comment 14•4 years ago
|
||
Please nominate this for beta approval when you get a chance.
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 16•4 years ago
|
||
will try to nominate to beta once got some ideas about bug 1683454. (keeping the ni)
Assignee | ||
Comment 17•4 years ago
|
||
Comment on attachment 9193430 [details]
Bug 1681771 - Update nursery used bytes threshold to 3MB.
Beta/Release Uplift Approval Request
- User impact if declined: No, this patch shouldn't have any impact on users. However this is related to performance or benchmark results.
- Is this code covered by automated tests?: Yes
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: None
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): This is not risky because it is just lowering the threshold for string pretenuring to help the pretenuring result on Android.
- String changes made/needed:
Comment 19•4 years ago
|
||
Comment on attachment 9193430 [details]
Bug 1681771 - Update nursery used bytes threshold to 3MB.
approved for 85.0b5
Comment 20•4 years ago
|
||
bugherder uplift |
Updated•4 years ago
|
Description
•