From: "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" Date: 2023-12-08T09:50:32+00:00 Subject: [ruby-core:115659] [Ruby master Bug#20048] UDPSocket#remote_address spec errors Issue #20048 has been updated by kjtsanaktsidis (KJ Tsanaktsidis). OK, thank you for that, I was able to get a mock up and running and I managed to reproduce the issue. I wrote a standalone C program to debug what happens when we call getaddrinfo with various combinations of flags. Its source is here, along with the output from running it inside and outside the mock. https://gist.github.com/KJTsanaktsidis/9f58e332d2bf3ccdbc18a3ff148b5bd4 What I found is that what doesn't work inside the mock environment is: * A call to `getaddrinfo` that wants localhost, whether it's spelled as `"localhost"` or `NULL` doesn't matter * The `AI_ADDRCONFIG` flag is passed, * And the family is explicitly set to `AF_INET` or `AF_INET6` (i.e. NOT set to `AF_UNSPEC`). I'm umming and aah'ing as to whether this is a glibc bug or not - I might spend some time tomorrow seeing how it behaves on different systems. But in any case the whole point of this feature was to work around a different glibc bug, and if this is triggering a worse one, then we should revert it. btw @mtasaka I don't think your patch is enough - even if `hostp` is not NULL, it could be `"localhost"` and it'll still fail. So yeah, tl;dr, I think we have to revert. ---------------------------------------- Bug #20048: UDPSocket#remote_address spec errors https://bugs.ruby-lang.org/issues/20048#change-105596 * Author: vo.x (Vit Ondruch) * Status: Open * Priority: Normal * ruby -v: ruby 3.3.0dev (2023-12-07 master 071df40495) [x86_64-linux] * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- Testing of Fedora Rawhide, we have recently started to observe following errors: ~~~ $ make -C redhat-linux-build test-spec MSPECOPT="-fs ../spec/ruby/library/socket/udpsocket" ... snip ... 1) An exception occurred during: before :each UDPSocket#local_address using IPv4 using an implicit hostname the returned Addrinfo uses the correct IP address ERROR Socket::ResolutionError: getaddrinfo: Name or service not known /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/local_address_spec.rb:66:in `connect' /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/local_address_spec.rb:66:in `block (4 levels) in ' /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/local_address_spec.rb:4:in `' 2) An exception occurred during: before :each UDPSocket#local_address using IPv6 using an implicit hostname the returned Addrinfo uses the correct IP address ERROR Socket::ResolutionError: getaddrinfo: Name or service not known /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/local_address_spec.rb:66:in `connect' /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/local_address_spec.rb:66:in `block (4 levels) in ' /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/local_address_spec.rb:4:in `' 3) An exception occurred during: before :each UDPSocket#remote_address using IPv4 using an implicit hostname the returned Addrinfo uses the correct IP address ERROR Socket::ResolutionError: getaddrinfo: Name or service not known /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/remote_address_spec.rb:65:in `connect' /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/remote_address_spec.rb:65:in `block (4 levels) in ' /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/remote_address_spec.rb:4:in `' 4) An exception occurred during: before :each UDPSocket#remote_address using IPv6 using an implicit hostname the returned Addrinfo uses the correct IP address ERROR Socket::ResolutionError: getaddrinfo: Name or service not known /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/remote_address_spec.rb:65:in `connect' /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/remote_address_spec.rb:65:in `block (4 levels) in ' /builddir/build/BUILD/ruby-3.3.0-071df40495/spec/ruby/library/socket/udpsocket/remote_address_spec.rb:4:in `' Finished in 0.020615 seconds 11 files, 95 examples, 123 expectations, 0 failures, 4 errors, 0 tagged make: *** [uncommon.mk:983: yes-test-spec] Error 1 make: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-071df40495/redhat-linux-build' ~~~ Please note that the build environment does not have network connection enabled by default. As soon as the network connection is available, the test cases pass just fine. This started to happen between these two commits: https://github.com/ruby/ruby/compare/c8b60c8ac2c8bbd077150792b5b207e983ab3634...071df40495e31f6d3fd14ae8686b01edf9a689e3 Where the culprit likely is commit:git|d2ba8ea54a4089959afdeecdd963e3c4ff391748 Originally reported [here](https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LEQADI6FCX74KSWJZKSJRBAJIS7EMUQS/) -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/