Regression (segfault) with std::print and __int128 using libstdc++6 17.0.0+20260802-0.1

martin_n_fuller via Cygwin <[email protected]>
Newsgroups gmane.os.cygwin
Message-ID <[email protected]>
The following test program compiles and runs successfully with clang 
20.1.8-2 and libstdc++6 16.1.1+20260801-0.1.
The same program compiled and run with libstdc++6 17.0.0+20260802-0.1 
exits with a segmentation fault.

#include <print>
int main(int argc, char *argv[]) {
   std::println("{}", static_cast<__int128>(argc) << 100);
}

$ clang++ -std=c++23 -g test.cpp -o test
$ ./test
1267650600228229401496703205376 (with 16.1.1)
Segmentation fault (with 17.0.0)

Martin

PS The same program fails to compile with gcc (16.1.1 or 17.0.0).
$ g++ -std=c++23 -g test.cpp -o test
In file included from 
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/print:53,
                  from test.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/bits/print.h: In 
constructor ‘std::__format::_File_sink::_File::_File(FILE*)’:
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/bits/print.h:198:52: error: 
‘::flockfile’ has not been declared; did you mean ‘_flockfile’?
   198 |       explicit _File(FILE* __f) : _M_file(__f) { 
::flockfile(_M_file); }
       |                                                    ^~~~~~~~~
       |                                                    _flockfile
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/bits/print.h: In destructor 
‘std::__format::_File_sink::_File::~_File()’:
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/bits/print.h:199:20: error: 
‘::funlockfile’ has not been declared; did you mean ‘_funlockfile’?
   199 |       ~_File() { ::funlockfile(_M_file); }
       |                    ^~~~~~~~~~~
       |                    _funlockfile
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/bits/print.h: In member 
function ‘virtual void std::__format::_File_sink::_M_overflow()’:
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/bits/print.h:211:20: error: 
‘::fwrite_unlocked’ has not been declared; did you mean 
‘_fwrite_unlocked_r’?
   211 |       auto __n = ::fwrite_unlocked(__s.data(), 1, __s.size(), 
_M_file._M_file);
       |                    ^~~~~~~~~~~~~~~
       |                    _fwrite_unlocked_r
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/bits/print.h: In destructor 
‘std::__format::_File_sink::~_File_sink()’:
/usr/lib/gcc/x86_64-pc-cygwin/17/include/c++/bits/print.h:232:11: error: 
‘::putc_unlocked’ has not been declared; did you mean 
‘_putc_unlocked_r’?
   232 |         ::putc_unlocked('\n', _M_file._M_file);
       |           ^~~~~~~~~~~~~
       |           _putc_unlocked_r

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.