Verified that tzdata-legacy 2024a-2ubuntu1 crashes with the test case. ** Description changed:
+ [ Impact ] + forwarded from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114770 ``` #include <chrono> int main() { - (void) std::chrono::locate_zone("Asia/Chungking"); + (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 + 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. Create `testcase.cpp`: + + ``` + #include <chrono> + int main() + { + (void) std::chrono::locate_zone("Asia/Chungking"); + } + ``` + + 2. Compile: `g++ -std=c++20 -o testcase testcase.cpp` + 3. Run: `./testcase` + + The test case should not crash. ** Description changed: [ 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. Create `testcase.cpp`: + 1. Install tzdata-legacy + 2. Create `testcase.cpp`: ``` #include <chrono> int main() { (void) std::chrono::locate_zone("Asia/Chungking"); } ``` - 2. Compile: `g++ -std=c++20 -o testcase testcase.cpp` - 3. Run: `./testcase` + 3. Compile: `g++ -std=c++20 -o testcase testcase.cpp` + 4. Run: `./testcase` The test case should not crash. -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, 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 -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp