On Wed, May 19, 2021 at 9:51 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > Christoph Berg <m...@debian.org> writes: > > I can reproducibly get build failures in pgbench on 32-bit i386 > > Debian, both on sid and buster. (The older Debian stretch and Ubuntu > > bionic are unaffected. Other architectures are also fine.) > > The test that's failing came in with > > 6b258e3d688db14aadb58dde2a72939362310684 > Author: Dean Rasheed <dean.a.rash...@gmail.com> > Date: Tue Apr 6 11:50:42 2021 +0100 > > pgbench: Function to generate random permutations.
FWIW this is reproducible on my local Debian/gcc box with -m32, but not on my FreeBSD/clang box with -m32. permute() produces different values here: \set t debug(permute(:size-1, :size, 5432) = 5301702756001087507 and \ permute(:size-2, :size, 5432) = 8968485976055840695 and \ permute(:size-3, :size, 5432) = 6708495591295582115 and \ permute(:size-4, :size, 5432) = 2801794404574855121 and \ permute(:size-5, :size, 5432) = 1489011409218895840 and \ permute(:size-6, :size, 5432) = 2267749475878240183 and \ permute(:size-7, :size, 5432) = 1300324176838786780) I don't understand any of this stuff at all, but I added a bunch of printfs and worked out that the first point its local variables diverge is here: /* Random offset */ r = (uint64) getrand(&random_state2, 0, size - 1); ... after 4 earlier getrand() produced matching values. Hmm.