[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