Bug 306034
| Summary: | [WKCI] EWS for WK2 tests for GTK And WPE ports should not pass the list of tests to be repeated via argv | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Carlos Alberto Lopez Perez <clopez> |
| Component: | WPE WebKit | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | bugs-noreply |
| Priority: | P2 | ||
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| See Also: |
https://bugs.webkit.org/show_bug.cgi?id=274673 https://bugs.webkit.org/show_bug.cgi?id=306025 |
||
Carlos Alberto Lopez Perez
When a PR is marked with the tag "no-failure-limits" then the EWS runs without the flags `--skip-failing-tests --exit-after-n-failures=500` so that makes it useful using the EWS for rebasing lot of tests.
Problem with the WK2 GTK/WPE EWS is that it passes the list of tests that failed via argv to be repeated, and if that list is too big (for example 4500 failing tests) then it crashes with "OSError: [Errno 7] Argument list too long: b'/bin/bash'." See: https://ews-build.webkit.org/#/builders/34/builds/107225/steps/33/logs/stdio
This was not a problem before the implementation of the usage of "Tools/Scripts/filter-test-logs", but since we are using that instead of passing the tests in multiple arguments we are passing a big argument to bash like in:
/bin/bash --posix -o pipefail -c 'python3 Tools/Scripts/run-webkit-tests fast/test1 svg/test2 imported/test3 fast/test4 [...] crash/test5000' 2>&1 | Tools/Scripts/filter-test-logs layout'
So then the list of tests becomes one single argument that is passed to bash. And Linux has a relatively low limit for that: MAX_ARG_STRLEN (which is unfortunately hard-coded to be 32*PAGESIZE => 131072) at https://github.com/torvalds/linux/blob/v6.18/include/uapi/linux/binfmts.h
Previously to filter-test-logs the limit was much bigger because each test was passed as a separate argument
$ getconf ARG_MAX
2097152
More info: https://serverfault.com/a/844666
Anyway, moving forward I think we need to stop passing the list of tests via arguments and instead write the list to a file in disk and on the retry pass the path to file to the runner and teach the runner to pick the list of tests from it.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |