https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114770

            Bug ID: 114770
           Summary: std::chrono::locate_zone("Asia/Chungking") fails on
                    Debian Sid
           Product: gcc
           Version: 13.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

#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.

Reply via email to