https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94087
Bug ID: 94087 Summary: std::random_device often fails when used from multiple threads Product: gcc Version: 9.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: coryan+gccbugzilla at google dot com Target Milestone: --- Created attachment 47995 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47995&action=edit A program to reproduce the problem. Creating and using a `std::random_device` object fails when used from multiple threads. A `std::exception` exception is throw with the message "random_device: rdseed failed", probably from this point in the code: https://github.com/gcc-mirror/gcc/blob/2a4c59d9aa6b1018fa8f86dd8c0573c1fed3f199/libstdc%2B%2B-v3/src/c%2B%2B11/random.cc#L108 The problem is easy to reproduce, compile the attached program and run it, it fails every time. I guess any version where __GLIBCXX__ >= 20200128 would have this problem. I just compiled with: g++ -std=c++17 -pthread -o /tmp/repro-rdseed repro-rdseed.cc and then run the program using: /tmp/repro-rdseed The program exits with 0 on success, 1 on failure, and prints some explanatory messages (and some version numbers). The bug *is* present on openSUSE/Tumbleweed, where the compiler reports: g++ (SUSE Linux) 9.2.1 20200128 [revision 83f65674e78d97d27537361de1a9d74067ff228d] Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. The bug is *not* present on on Fedora:31 where the compiler reports: g++ (GCC) 9.2.1 20190827 (Red Hat 9.2.1-1) Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. PS: Apologies if I get my version numbers wrong, I am used to using binary distributions, have not compiled GCC from source in 2 decades or so.