It's definitely non-deterministic, unfortunately. I do have a reliable reproduction for Bionic and Focal I can trigger on my laptop, but it's a huge pile of proprietary Ruby code that just happens to hit all the right timings on my machine. I can validate a -proposed package if you need though.
The reproduction instructions basically boil down to "Have IPv6, call getaddrinfo(), and if you're unlucky, it will take > 5 seconds and make 4 DNS queries instead of two".
There is also a test case provided in the upstream glibc patch that could also be applied.
It's definitely non-deterministic, unfortunately. I do have a reliable reproduction for Bionic and Focal I can trigger on my laptop, but it's a huge pile of proprietary Ruby code that just happens to hit all the right timings on my machine. I can validate a -proposed package if you need though.
The reproduction instructions basically boil down to "Have IPv6, call getaddrinfo(), and if you're unlucky, it will take > 5 seconds and make 4 DNS queries instead of two".
There is also a test case provided in the upstream glibc patch that could also be applied.
https:/ /sourceware. org/git/ ?p=glibc. git;a=blob; f=resolv/ tst-resolv- txnid-collision .c;h=611d37362f 3e5e89b92766f07 90459340cc071b3 ;hb=2dfa659a66f 20facc408220788 4c20e986ddecee