Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 52ff189c46229b8f81b3c2f5ab705ff49cda7780
https://github.com/WebKit/WebKit/commit/52ff189c46229b8f81b3c2f5ab705ff49cda7780
Author: Alejandro G. Castro <[email protected]>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M Tools/Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py
Log Message:
-----------
A hung WebDriver command makes run-webdriver-tests hang forever
https://bugs.webkit.org/show_bug.cgi?id=323608
Reviewed by Carlos Alberto Lopez Perez.
The W3C runner hands each test file to a child process over a queue and then
waits for the result with self._result_queue.get(), which has no timeout. The
child runs the actual WebDriver commands, so if the browser never answers one
of them the child never posts a result and the parent waits for it forever.
Nothing prints in the meantime, so a wedged run is indistinguishable from a
slow one.
Bound that wait. When it expires the test process is wedged, so kill it and
report the file as an error.
teardown() had a related problem: it asked the test process to stop and
dropped its reference without waiting for it to go away, and both queues were
created once per executor and reused by every later process. An abandoned
process could therefore still take a test off the queue or push a result onto
it, and from then on every result was paired with the wrong test file, which
is hard to notice because the results still look plausible. Wait for the
process to exit, kill it if it does not, and give each test process its own
pair of queues.
* Tools/Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:
(WebDriverW3CExecutor.__init__):
(WebDriverW3CExecutor.setup):
(WebDriverW3CExecutor.teardown):
(WebDriverW3CExecutor.run):
(WebDriverW3CExecutor):
(do_delayed_imports):
Canonical link: https://commits.webkit.org/320921@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications