RESOLVED FIXED 260833
REGRESSION(267279@main): [ macOS wk2 ] imported/w3c/web-platform-tests/media-source/mediasource-play-then-seek-back.html is a consistent text failure.
https://bugs.webkit.org/show_bug.cgi?id=260833
Summary REGRESSION(267279@main): [ macOS wk2 ] imported/w3c/web-platform-tests/media-...
Ben Schwartz
Reported 2023-08-28 16:49:40 PDT
imported/w3c/web-platform-tests/media-source/mediasource-play-then-seek-back.html This test is a consistent text failure on macOS wk2 (including gpuprocess). HISTORY: https://results.webkit.org/?suite=layout-tests&test=imported%2Fw3c%2Fweb-platform-tests%2Fmedia-source%2Fmediasource-play-then-seek-back.html&platform=mac&flavor=wk2&flavor=gpuprocess TEXT DIFF: -PASS Test playing then seeking back. +Harness Error (TIMEOUT), message = null +TIMEOUT Test playing then seeking back. Test timed out + DIFF URL: https://build.webkit.org/results/Apple-Ventura-Release-AppleSilicon-WK2-Tests/267362%40main%20(4670)/imported/w3c/web-platform-tests/media-source/mediasource-play-then-seek-back-pretty-diff.html REPRODUCTION: I was able to reproduce this bug on macOS Ventura (13.5, 22G74/arm64) using the following command: run-webkit-tests --verbose --iterations 100 --clobber-old-results --exit-after-n-failures 1 imported/w3c/web-platform-tests/media-source/mediasource-play-then-seek-back.html REGRESSION: I was able to bisect a regression point. This test reproduced at 267279@main, but it did not reproduce at 267278@main. Changes at 267279@main appear to be directly related to this error, and is likely what caused the failure.
Attachments
Radar WebKit Bug Importer
Comment 1 2023-08-28 16:49:49 PDT
EWS
Comment 2 2023-08-28 17:06:38 PDT
Test gardening commit 267375@main (cae1cdb5b828): <https://commits.webkit.org/267375@main> Reviewed commits have been landed. Closing PR #17157 and removing active labels.
Jean-Yves Avenard [:jya]
Comment 3 2023-09-05 22:46:09 PDT
The issue occurs because the web content process always assumes a seek is completed once the GPU process sends a `timeChanged` call. But a `timeChanged` call doesn't always happen following a seek operation. consider the following: MediaPlayer (WP) start playback and immediately starts seeking. The GPU process upon starting playback will call back `timeChanged` as soon as the time progresses. The MediaPlayer (WP) now assumes that seeking has completed and fire the seeked event. The WPT tests waits for the `seeking` event to be fired to set a `seeked` event listener, and it does so by calling setTimeout(0). So the `seeked` is listener is only set at the next event loop. By the time, in the above scenario) the seeked event has already been fired. And so the test timeout waiting for another `seeked` event that will never come. So we have two issues at hand: - We fire the `seeked` event too early, before the seek operation has completed when we do: video.play() video.currentTime = 0; - The WPT test shouldn't wait for another event loop to set an event listener. The latter is done everywhere, and appears incorrect in this case. The spec indicates that within the `seeking` event being fired and the `seeked` event, we are only to await a stable state. https://html.spec.whatwg.org/#seeking A stable state occurs through a micro task, it isn't dependent on a new event loop. So the firing for `seeking` and `seeked` could be all done within the same event loop. If so, the test here will timeout.
Jean-Yves Avenard [:jya]
Comment 4 2023-09-06 07:21:25 PDT
EWS
Comment 5 2023-09-07 04:31:56 PDT
Committed 267723@main (939ec6849c62): <https://commits.webkit.org/267723@main> Reviewed commits have been landed. Closing PR #17480 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.