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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
      Known to work|                            |6.4.0
           Keywords|                            |wrong-code
   Last reconfirmed|                            |2018-06-25
          Component|libstdc++                   |ipa
                 CC|                            |marxin at gcc dot gnu.org
     Ever confirmed|0                           |1
            Summary|SEGFAULT when logging       |[7/8/9 Regression] SEGFAULT
                   |std::to_string(NAN)         |when logging
                   |                            |std::to_string(NAN)
      Known to fail|                            |6.4.0, 7.3.0, 8.1.0, 9.0

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Filip Matzner from comment #0)
> Consider the following code:
> 
> #include <climits>
> #include <boost/log/trivial.hpp>
> int main()
> {
>     BOOST_LOG_TRIVIAL(info)
>       << std::to_string(std::numeric_limits<double>::quiet_NaN());

There's no crash if BOOST_LOG_TRIVIAL(info) is replaced with std::cout, which
suggests there's nothing wrong with the std::to_string code or the std::string
constructor.

It crashes with either the old or new std:string code. Either way, it crashes
when calling __builtin_mcmcpy


> }
> 
> 
> When compiled with the following command:
> g++ -std=c++17 -DBOOST_ALL_DYN_LINK -pthread -lboost_log -O3 test.cpp
> 
> It crashes with SEGFAULT in std::string constructor:
> 
> #0  0x0000555555556221 in std::char_traits<char>::copy (__n=3,
> __s2=0x7fffffffd4e0 "nan", __s1=<optimized out>) at
> /usr/include/c++/7/bits/char_traits.h:350
> 
> Note that the SEGFAULT does not happen with -O2, but only -O3.

It crashes with -O2 -fipa-cp-clone

Compiled with GCC 6 it doesn't crash. Compiled with GCC 7.1+ it crashes.
Preprocessed with GCC 6 and compiled with GCC 7+ it crashes.

Reply via email to