https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109656

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |WORKSFORME
             Status|ASSIGNED                    |RESOLVED

--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Looking at the commits in that ranges which touched g++, libstdc++, and
config/rs6000, this one looks relevant (r14-2217-gd6a6a4ea086d6a)

    libstdc++: Make std::random_device throw more std::system_error [PR105081]

    In r14-289-gf9412cedd6c0e7 I made the std::random_device constructor
    throw std::system_error for unrecognized tokens. But it still throws
    std::runtime_error for a token such as "rdseed" that is recognized but
    not supported at runtime by the CPU the program is running on.

    With this change we throw std::system_error for those cases too. This
    fixes the following failures on Intel CPUs withour rdseed support:

    FAIL: 26_numerics/random/random_device/94087.cc execution test
    FAIL: 26_numerics/random/random_device/cons/token.cc execution test
    FAIL: 26_numerics/random/random_device/entropy.cc execution test

    libstdc++-v3/ChangeLog:

            PR libstdc++/105081
            * src/c++11/random.cc (random_device::_M_init): Throw
            std::system_error when the requested device is a valid token but
            not available at runtime.


I don't know how this would cause "terminate called without active exception"
but it's certainly in the same code.

I don't see any need to narrow it down further, so I'm happy to close it.
Thanks for checking the logs.

Reply via email to