• Bug#1095247: ruby-dalli: autopkgtest regression on armel and armhf

    From Lucas Nussbaum@21:1/5 to All on Wed Apr 9 16:20:01 2025
    Control: forwarded -1 https://github.com/petergoldstein/dalli/issues/1034

    Hi,

    I tracked this down to this MWE:

    require 'dalli'
    dc = Dalli::Client.new('localhost:11211', { namespace: "app_v1" })
    dc.flush_all

    which fails on armel with:

    /usr/share/rubygems-integration/all/gems/dalli-3.2.8/lib/dalli/socket.rb:133:in `setsockopt': Invalid argument - setsockopt(2) (Errno::EINVAL)
    from /usr/share/rubygems-integration/all/gems/dalli-3.2.8/lib/dalli/socket.rb:133:in `init_socket_options'
    from /usr/share/rubygems-integration/all/gems/dalli-3.2.8/lib/dalli/socket.rb:94:in `block in open'
    from /usr/share/rubygems-integration/all/gems/dalli-3.2.8/lib/dalli/socket.rb:110:in `create_socket_with_timeout'
    from /usr/share/rubygems-integration/all/gems/dalli-3.2.8/lib/dalli/socket.rb:92:in `open'
    [...]

    or using strace:

    [pid 59410] setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
    [pid 59410] setsockopt(5, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
    [pid 59410] setsockopt(5, SOL_SOCKET, SO_RCVTIMEO_NEW, "\1\0\0\0\0\0\0\0", 8) = -1 EINVAL (Invalid argument)

    The relevant upstream change is: https://github.com/petergoldstein/dalli/pull/1025/commits/1a7af32f0ccd4a20c4e2d0b4f2adc1ca29046e48

    And specifically this code:

    seconds, fractional = options[:socket_timeout].divmod(1)
    timeval = [seconds, fractional * 1_000_000].pack('l_2')

    sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_RCVTIMEO, timeval)
    sock.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_SNDTIMEO, timeval)

    The problem here is that the packing of seconds, microseconds into a
    struct timeval is architecture-dependent, and cannot be assumed to be
    solved by pack('l_2').

    I opened https://github.com/petergoldstein/dalli/issues/1034

    Lucas

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Paul Gevers@21:1/5 to All on Fri Apr 18 17:10:01 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------7RFeOm5dWwuL3nljROeMuTCq
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    Q29udHJvbDogcmV0aXRsZSAtMSBydWJ5LWRhbGxpIHBvdGVudGlhbCBpc3N1ZSB3aXRoIDY0 YiB0aW1lX3Qgb24gYXJtKg0KDQpPbiBXZWQsIDkgQXByIDIwMjUgMTY6MTA6NTQgKzAyMDAg THVjYXMgTnVzc2JhdW0gPGx1Y2FzQGRlYmlhbi5vcmc+IHdyb3RlOg0KPiBUaGUgcHJvYmxl bSBoZXJlIGlzIHRoYXQgdGhlIHBhY2tpbmcgb2Ygc2Vjb25kcywgbWljcm9zZWNvbmRzIGlu dG8gYQ0KPiBzdHJ1Y3QgdGltZXZhbCBpcyBhcmNoaXRlY3R1cmUtZGVwZW5kZW50LCBhbmQg Y2Fubm90IGJlIGFzc3VtZWQgdG8gYmUNCj4gc29sdmVkIGJ5IHBhY2soJ2xfMicpLg0KDQpG b3IgdGhvc2UgbG9va2luZyBhdCB0aGUgQlRTIGZvciBSQyBidWdzLCBsZXQncyBtYWtlIHRo ZSB0aXRsZSBhIGJpdCANCmNsZWFyZXIuDQoNClBhdWwNCg0K

    --------------7RFeOm5dWwuL3nljROeMuTCq--

    -----BEGIN PGP SIGNATURE-----

    wsB5BAABCAAjFiEEWLZtSHNr6TsFLeZynFyZ6wW9dQoFAmgCaRgFAwAAAAAACgkQnFyZ6wW9dQqF vgf8DOPSzwj7q2kLZ6K6EfrwYc008yep3nL5IvO/h961Ruk1iMWso049ubbPCTPduRcOhyCc5xjZ ewavx1qS6r2udx7nYuuTjrzyZMIXjWqSGpkxZ35/ayMvojwpsJvy15vi88LmN+1mdStrhF6yIVlj vGR1UNBozC0rcpfgnGg5dbOk8PhFfbvO4WDIepicjo68uTeMKSdSX29w6DvKk5FPqG3NctCbizLA ilxvLKow8jMuPS6N/YfmtwqzwrqhUukuzSqNFsGHdBlxbckDg/GhYPLQyeAaemIaOR0pajbmKoiU 0SXxYwzDwowLBehvHLKcsDNop1Y6Zhecv5TVmfWpHQ==
    =+Vxj
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)