[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: slapd-mtread crash on ppc64{,el} in stretch/sid



I spent some more time on this issue and I believe I isolated the problem to the following line:

int     r = ((double)nvalues)*rand()/(RAND_MAX + 1.0);

http://sources.debian.net/src/openldap/2.4.44%2Bdfsg-7/tests/progs/slapd-mtread.c/#L682

Specifically, during the multi-threaded tests, casting 'nvalues' from int to double occasionally comes up with the wrong result.

e.g.:
(double)19 -> 61.000000

Note that 'nvalues' is a local variable in the same function. There should be zero chance of it being shared with another thread or anything like that.

The bug reproduces consistently when building with stretch's toolchain and running stretch's kernel, but I have not seen it at all with jessie's kernel *nor* in a jessie chroot on stretch's kernel. I have also reproduced it with clang as well as gcc.


Reply to: