-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Closed
Description
Describe the bug
I encountered a crash while using std::chrono::zoned_time with std::format.
According to https://en.cppreference.com/w/cpp/chrono/zoned_time.html it's supposed to be supported, my program compiles correctly but crashes on format (see call stack below for more details).
Command-line test case
C:\Temp>type main.cpp
#include <iostream>
#include <chrono>
#include <string>
#include <format>
#include <iostream>
int main()
{
using namespace std::chrono;
auto now = floor<seconds>(system_clock::now());
zoned_time local_zoned{ current_zone(), now };
std::string ts = std::format("{:%Y%m%d_%H%M%S}", local_zoned);
std::cout << std::format("../logs/NEXO-{}.log", ts) << std::endl;
return 0;
}C:\Temp>cl /EHsc /W4 /WX /std:c++latest .\main.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.41.34120 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
/std:c++latest is provided as a preview of language features from the latest C++
working draft, and we're eager to hear about bugs and suggestions for improvements.
However, note that these features are provided as-is without support, and subject
to changes or removal as the working draft evolves. See
https://go.microsoft.com/fwlink/?linkid=2045807 for details.
main.cpp
Microsoft (R) Incremental Linker Version 14.41.34120.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:main.exe
main.obj
C:\Temp>start /wait .\main.exe
C:\Temp>echo %errorlevel%
-1073740791
Expected behavior
C:\Temp>main.exe
../logs/NEXO-20250626_222325.log
C:\Temp>start /wait .\main.exe
C:\Temp>echo %errorlevel%
0
STL version
- Option 1: Visual Studio version
Microsoft Visual Studio Community 2022 (64-bit) - Current Version 17.11.3
Additional context
cl version
Microsoft (R) C/C++ Optimizing Compiler Version 19.41.34120 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
Windows 11 version
Version 24H2 build 26100.4351
Computer
Laptop Gigabyte G6X 9KG-43FR854SH
Crash details
Unhandled exception at 0x00007FFDC63E85EA in bugStdFormat.exe: Microsoft C++ exception: std::system_error at memory location 0x00000080334FD5F0.
Call stack
KernelBase.dll!00007ffdc63e85ea() Unknown
vcruntime140d.dll!00007ffce9219362() Unknown
msvcp140d.dll!00007ffcc9150689() Unknown
> bugStdFormat.exe!std::chrono::_Make_unique_tzdb_info<&__std_tzdb_get_sys_info,char const *,unsigned __int64 const &,double>(const char * && <_Args_0>, const unsigned __int64 & <_Args_1>, double && <_Args_2>) Line 1737 C++
bugStdFormat.exe!std::chrono::time_zone::_Get_info<std::chrono::duration<__int64,std::ratio<1,1>>>(const std::chrono::duration<__int64,std::ratio<1,1>> & _Dur, __std_tzdb_sys_info_type _Type) Line 1820 C++
bugStdFormat.exe!std::chrono::time_zone::get_info<std::chrono::duration<__int64,std::ratio<1,1>>>(const std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<__int64,std::ratio<1,1>>> & _Sys) Line 1764 C++
bugStdFormat.exe!std::chrono::zoned_time<std::chrono::duration<__int64,std::ratio<1,1>>,std::chrono::time_zone const *>::get_info() Line 2519 C++
bugStdFormat.exe!std::formatter<std::chrono::zoned_time<std::chrono::duration<__int64,std::ratio<1,1>>,std::chrono::time_zone const *>,char>::format<std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char>>(const std::chrono::zoned_time<std::chrono::duration<__int64,std::ratio<1,1>>,std::chrono::time_zone const *> & _Val, std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char> & _FormatCtx) Line 5950 C++
bugStdFormat.exe!std::basic_format_arg<std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char>>::handle::{ctor}::__l1::<lambda_3_>::operator()(std::basic_format_parse_context<char> & _Parse_ctx, std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char> & _Format_ctx, const void * _Ptr) Line 723 C++
bugStdFormat.exe!`std::basic_format_arg<std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char>>::handle::handle<std::chrono::zoned_time<std::chrono::duration<__int64,std::ratio<1,1>>,std::chrono::time_zone const *>>'::`1'::<lambda_3_>::<lambda_invoker_cdecl>(std::basic_format_parse_context<char> & _Parse_ctx, std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char> & _Format_ctx, const void * _Ptr) Line 725 C++
bugStdFormat.exe!std::basic_format_arg<std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char>>::handle::format(std::basic_format_parse_context<char> & _Parse_ctx, std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char> & _Format_ctx) Line 729 C++
bugStdFormat.exe!std::_Format_handler<char>::_On_format_specs(const unsigned __int64 _Id, const char * _First, const char * _Last) Line 3663 C++
bugStdFormat.exe!std::_Parse_replacement_field<char,std::_Format_handler<char> &>(const char * _First, const char * _Last, std::_Format_handler<char> & _Handler) Line 1493 C++
bugStdFormat.exe!std::_Parse_format_string<char,std::_Format_handler<char> &>(std::basic_string_view<char,std::char_traits<char>> _Format_str, std::_Format_handler<char> & _Handler) Line 1544 C++
bugStdFormat.exe!std::vformat_to<std::back_insert_iterator<std::string>>(std::back_insert_iterator<std::string> _Out, const std::basic_string_view<char,std::char_traits<char>> _Fmt, const std::basic_format_args<std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char>> _Args) Line 3778 C++
bugStdFormat.exe!std::vformat<0>(const std::basic_string_view<char,std::char_traits<char>> _Fmt, const std::basic_format_args<std::basic_format_context<std::back_insert_iterator<std::_Fmt_buffer<char>>,char>> _Args) Line 3855 C++
bugStdFormat.exe!std::format<std::chrono::zoned_time<std::chrono::duration<__int64,std::ratio<1,1>>,std::chrono::time_zone const *> &>(const std::basic_format_string<char,std::chrono::zoned_time<std::chrono::duration<__int64,std::ratio<1,1>>,std::chrono::time_zone const *> &> _Fmt, std::chrono::zoned_time<std::chrono::duration<__int64,std::ratio<1,1>>,std::chrono::time_zone const *> & <_Args_0>) Line 3885 C++
bugStdFormat.exe!main() Line 13 C++
[External Code]
Metadata
Metadata
Assignees
Labels
No labels