[Bug 2062522] Re: std::chrono::locate_zone("Asia/Chungking") fails
Benjamin Drung
2062522 at bugs.launchpad.net
Tue Apr 30 21:54:44 UTC 2024
Waiting for the package to hit the mirror...
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to tzdata in Ubuntu.
https://bugs.launchpad.net/bugs/2062522
Title:
std::chrono::locate_zone("Asia/Chungking") fails
Status in glibc package in Ubuntu:
New
Status in tzdata package in Ubuntu:
Fix Committed
Status in tzdata source package in Noble:
Fix Committed
Bug description:
[ Impact ]
forwarded from
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114770
```
#include <chrono>
int main()
{
(void) std::chrono::locate_zone("Asia/Chungking");
}
```
With the latest tzdata (version 2024a-2) on Debian Sid this fails:
terminate called after throwing an instance of 'std::runtime_error'
what(): tzdb: cannot locate zone: Asia/Chungking
Aborted (core dumped)
The problem is a Debian patch that enables link chaining, so that one link can have another link as its target:
https://sources.debian.org/patches/tzdata/2024a-2/ziguard.awk-Move-link-to-link-feature-from-vanguard-to-ma.patch/
This feature was added to tzdata in 2022, but isn't compatible with
the expectations of the C++20 standard. When chrono::locate_zone finds
a link, it expects its target to be a zone, not another link.
[ Test Plan ]
1. Install tzdata-legacy
2. Create `testcase.cpp`:
```
#include <chrono>
int main()
{
(void) std::chrono::locate_zone("Asia/Chungking");
}
```
3. Compile: `g++ -std=c++20 -o testcase testcase.cpp`
4. Run: `./testcase`
The test case should not crash.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2062522/+subscriptions
More information about the foundations-bugs
mailing list