https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101866
Bug ID: 101866
Summary: libstdc++-v3/testsuite/experimental/random/randint.cc
fails
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: testsuite
Assignee: unassigned at gcc dot gnu.org
Reporter: seurer at gcc dot gnu.org
Target Milestone: ---
libstdc++-v3/testsuite/experimental/random/randint.cc fails on rare occasions.
I have only seen it happen twice now once after running it 1.9 million times to
try to spot it:
/home/seurer/gcc/git/gcc-9-test/libstdc++-v3/testsuite/experimental/random/randint.cc:61:
void test01(): Assertion '!(n3[0] == n1[0] && n3[1] == n1[1] && n3[2] ==
n1[2])' failed.
/home/seurer/bin/runmany.gcc: line 212: 39222 Aborted (core
dumped) ./randint.exe
While I spotted this with gcc 9 the test has not changed in current trunk anmd
I assume in gcc 10 and gcc 11 as well.
OK,
std::experimental::reseed(99u);
const long n1[] = {
std::experimental::randint(0, 100),
std::experimental::randint(0, 100),
std::experimental::randint(0, 100),
std::experimental::randint(0, 100),
std::experimental::randint(0, 100)
};
. . .
std::experimental::reseed();
const long n3[] = {
std::experimental::randint(0, 100),
std::experimental::randint(0, 100),
std::experimental::randint(0, 100)
};
VERIFY( !(n3[0] == n1[0] && n3[1] == n1[1] && n3[2] == n1[2]) );
I don't think the above code from the test is correct. There is a small chance
(1 in 100 for each) that the values in n3 will be the same as the values in n1.