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
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2062522

Title:
   std::chrono::locate_zone("Asia/Chungking") fails

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2062522/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to