Fix intermittent crashes in paint worklets (#30671)

Garbage collection means that the worklets might drop after the script
head has been cleaned up. The worklet now caches the thread pool in the
DOM object itself which should prevent it from needing to access script
thread TLS when being cleaned up. The value is stored as a OnceCell to
maintain the same lazy thread pool creation pattern as before.

Fixes #25838.
Fixes #25258.
This commit is contained in:
Martin Robinson 2023-11-02 15:55:50 +01:00 committed by GitHub
parent c2af95d2fc
commit f8ec3df495
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
76 changed files with 59 additions and 137 deletions

View file

@ -1,2 +1,2 @@
[background-image-alpha.https.html]
expected: CRASH
expected: PASS

View file

@ -1,2 +0,0 @@
[background-image-multiple.https.html]
expected: CRASH

View file

@ -1,3 +1,3 @@
[background-image-tiled.https.html]
type: reftest
expected: CRASH
expected: FAIL

View file

@ -1,2 +0,0 @@
[background-repeat-x.https.html]
expected: CRASH

View file

@ -1,2 +1,2 @@
[custom-property-animation-on-main-thread.https.html]
expected: CRASH
expected: FAIL

View file

@ -1,2 +0,0 @@
[geometry-background-image-001.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-background-image-002.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-background-image-tiled-001.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-background-image-tiled-002.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-background-image-tiled-003.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-border-image-001.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-border-image-002.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-border-image-003.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-border-image-004.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[geometry-border-image-005.https.html]
expected: CRASH

View file

@ -1,3 +1,3 @@
[geometry-with-float-size.https.html]
type: reftest
expected: CRASH
expected: FAIL

View file

@ -1,2 +1,2 @@
[canvas-transform.https.html]
expected: CRASH
expected: FAIL

View file

@ -1,3 +1,3 @@
[device-pixel-ratio.https.html]
type: reftest
expected: CRASH
expected: FAIL

View file

@ -1,2 +0,0 @@
[invalid-image-constructor-error.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[invalid-image-paint-error.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[invalid-image-pending-script.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[non-registered-property-value.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[overdraw.https.html]
expected: CRASH

View file

@ -1,2 +1,2 @@
[paint-arguments.https.html]
expected: CRASH
expected: PASS

View file

@ -1,2 +1,2 @@
[paint-function-arguments-var.https.html]
expected: CRASH
expected: FAIL

View file

@ -1,2 +1,2 @@
[paint-function-arguments.https.html]
expected: CRASH
expected: PASS

View file

@ -1,2 +0,0 @@
[paint-function-this-value.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[paint2d-canvasFilter.tentative.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[paint2d-composite.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[paint2d-conicGradient.https.html]
expected: CRASH

View file

@ -1,2 +1,2 @@
[paint2d-filter.https.html]
expected: CRASH
expected: TIMEOUT

View file

@ -1,2 +0,0 @@
[paint2d-gradient.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[paint2d-image.https.html]
expected: CRASH

View file

@ -1,4 +1,4 @@
[paint2d-paths.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17597
expected: CRASH
expected: FAIL

View file

@ -1,2 +0,0 @@
[paint2d-rects.https.html]
expected: CRASH

View file

@ -1,2 +1,2 @@
[paint2d-reset.https.html]
expected: CRASH
expected: FAIL

View file

@ -1,2 +0,0 @@
[paint2d-roundRect.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[paint2d-shadows.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[paint2d-transform.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-001.https.html]
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-002.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-003.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-004.https.html]
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-005.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-006.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-007.https.html]
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-008.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-009.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-010.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-011.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-012.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-013.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-014.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-015.https.html]
expected: CRASH

View file

@ -1,4 +1,3 @@
[parse-input-arguments-016.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17852
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-017.https.html]
expected: CRASH

View file

@ -1,3 +1,3 @@
[parse-input-arguments-018.https.html]
type: reftest
expected: CRASH
expected: FAIL

View file

@ -1,2 +0,0 @@
[parse-input-arguments-019.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-020.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-021.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[parse-input-arguments-022.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[roundrect.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[setTransform-001.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[setTransform-002.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[setTransform-003.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[setTransform-004.https.html]
expected: CRASH

View file

@ -1,4 +1,4 @@
[style-background-image.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17378
expected: CRASH
expected: FAIL

View file

@ -1,4 +1,4 @@
[style-before-pseudo.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17854
expected: CRASH
expected: FAIL

View file

@ -1,4 +1,4 @@
[style-first-letter-pseudo.https.html]
type: reftest
bug: https://github.com/servo/servo/issues/17854
expected: CRASH
expected: FAIL

View file

@ -1,2 +0,0 @@
[valid-image-after-load.https.html]
expected: CRASH

View file

@ -1,2 +0,0 @@
[valid-image-before-load.https.html]
expected: CRASH

View file

@ -1,2 +1,2 @@
[test_paint_worklet.html]
expected: CRASH
expected: PASS

View file

@ -1,3 +1,3 @@
[test_paint_worklet_size.html]
type: reftest
expected: CRASH
expected: FAIL

View file

@ -1,4 +1,4 @@
[test_paint_worklet_timeout.html]
type: testharness
prefs: [dom.worklet.timeout_ms:10]
expected: CRASH
expected: PASS