I did this
Over the last several days, CI jobs running on GitHub actions have turned flaky. Sometimes one of the macOS jobs fails, sometimes 10 of them fail. Rerunning the same code again may result in a different outcome.
The failures seem IPv6 related somehow. example job, another example
The most obvious symptom seems to be that when it has problems, it can't "resolve" ::1. It can be noted that for macOS we call getaddrinfo even on plain numerical IP addresses
failures
When this problem happens, usually the following test cases fail: 1085 1400 1401 1402 1403 1404 1405 1406 1407 1420 1465 1467 1468 2100
Looking at test logs in a failed run , we can see that all HTTP-IPv6 tests are skipped because curl cannot verify the IPv6 server:
2024-04-02T19:43:36.1057020Z * Added connection 0. The cache now contains 1 members
2024-04-02T19:43:36.1057900Z * STATE: CONNECT => RESOLVING handle 0x7fc26980be08; line 1954
2024-04-02T19:43:36.1058690Z * Could not resolve host: ::1
test 1085
Tries to use an IPv6 address for --interface but the resolving of the host (::1) fails, which makes the test return an unexpected return code.
test 1400-1468
These tests verify --libcurl - outputting generated libcurl using source code for a curl command line.
These tests mysteriously get an extra line of libcurl code added:
curl_easy_setopt(hnd, CURLOPT_IPRESOLVE, 1L);
The only way CURLOPT_IPRESOLVE is set by the curl command line tool is when the -4/--ipv4 option is used. And it is not used in any of these tests.
test 2100
Uses DoH. When failing, the request does not ask for an IPv6 address (only IPv4) which makes the protocol check fail. Because it deems IPv6 not working?
macOS runner image
Image: macos-12
Version: 20240329.1
Included Software: https://github.com/actions/runner-images/blob/macOS-12/20240329.1/images/macos/macos-12-Readme.md
Image Release: https://github.com/actions/runner-images/releases/tag/macOS-12%2F20240329.1
I expected the following
The tests should just work.
curl/libcurl version
current git
operating system
macOS only
I did this
Over the last several days, CI jobs running on GitHub actions have turned flaky. Sometimes one of the macOS jobs fails, sometimes 10 of them fail. Rerunning the same code again may result in a different outcome.
The failures seem IPv6 related somehow. example job, another example
The most obvious symptom seems to be that when it has problems, it can't "resolve"
::1. It can be noted that for macOS we callgetaddrinfoeven on plain numerical IP addressesfailures
When this problem happens, usually the following test cases fail: 1085 1400 1401 1402 1403 1404 1405 1406 1407 1420 1465 1467 1468 2100
Looking at test logs in a failed run , we can see that all HTTP-IPv6 tests are skipped because curl cannot verify the IPv6 server:
test 1085
Tries to use an IPv6 address for
--interfacebut the resolving of the host (::1) fails, which makes the test return an unexpected return code.test 1400-1468
These tests verify
--libcurl- outputting generated libcurl using source code for a curl command line.These tests mysteriously get an extra line of libcurl code added:
The only way
CURLOPT_IPRESOLVEis set by the curl command line tool is when the-4/--ipv4option is used. And it is not used in any of these tests.test 2100
Uses DoH. When failing, the request does not ask for an IPv6 address (only IPv4) which makes the protocol check fail. Because it deems IPv6 not working?
macOS runner image
I expected the following
The tests should just work.
curl/libcurl version
current git
operating system
macOS only