Closed Bug 1681771 Opened 4 years ago Closed 4 years ago

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)

defect

Tracking

()

RESOLVED FIXED
86 Branch
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)

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```

Jon please have a look over this tier2 permafailure from https://hg.mozilla.org/mozilla-central/rev/4d7255296684f147ec51578703f725fc242a24a6
Thank you.

Flags: needinfo?(jcoppeard)
Summary: Intermittent [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] → 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]
Assignee: nobody → allstars.chh
Flags: needinfo?(jcoppeard)

Set release status flags based on info from the regressing bug 1681693

Whiteboard: [retriggered][stockwell needswork:owner]

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

Attachment #9193430 - Attachment description: Bug 1681771 - Part 2: Update nursery used bytes threshold. → Bug 1681771 - Update nursery used bytes threshold to 3MB.
Attachment #9193429 - Attachment is obsolete: true
Pushed by allstars.chh@gmail.com: https://hg.mozilla.org/integration/autoland/rev/39dae0dc3fd4 Update nursery used bytes threshold to 3MB. r=jonco
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 86 Branch

Please nominate this for beta approval when you get a chance.

Flags: needinfo?(allstars.chh)

will try to nominate to beta once got some ideas about bug 1683454. (keeping the ni)

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:
Flags: needinfo?(allstars.chh)
Attachment #9193430 - Flags: approval-mozilla-beta?

Comment on attachment 9193430 [details]
Bug 1681771 - Update nursery used bytes threshold to 3MB.

approved for 85.0b5

Attachment #9193430 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: