Ticket UUID: | 86dd172271f35ac4f08b15c440fa94ce7c6022c1 | |||
Title: | interp.test fails if clock is set to year 2040 (even on 64 bit machines) | |||
Type: | Bug | Version: | 8.6.13 | |
Submitter: | kanavin | Created on: | 2023-08-07 11:44:44 | |
Subsystem: | 20. [interp] | Assigned To: | jan.nijtmans | |
Priority: | 5 Medium | Severity: | Important | |
Status: | Closed | Last Modified: | 2024-01-08 14:43:55 | |
Resolution: | Fixed | Closed By: | jan.nijtmans | |
Closed on: | 2024-01-08 14:43:55 | |||
Description: |
When system date is set to 2040 (e.g. post-2038), interp.test starts producing failures, this is the output. I suspect there's a 32 bit integer in use for time somewhere? Note that this happens on 64 bit x86_64 machine, so the issue seems specific to tcl.
| |||
User Comments: |
jan.nijtmans added on 2024-01-08 14:43:55:
Fixed for 9.0 kanavin added on 2023-08-28 08:48:15: I need to add a bit of background information: in scope of Yocto project (distribution toolkit for Linux-based embedded systems) I am testing whether a complete system keeps working if system date is set to 2040, both on 64 bit and 32 bit targets. 'Keeps working' means as well running as many component-specific test suites as possible, including tcl, as of currently released version. This ticket is the outcome of that work: on 64 bit systems interp.test starts failing as shown, and on 32 bit systems a few additional failures start to happen (I didn't document them separately, but they do occur). With the two attached patches all failures are resolved. I'm happy to have the issues resolved elsewhere, or I can do additional work to merge them. As long as the issues are both known, and eventually fixed. jan.nijtmans added on 2023-08-27 16:16:03: This ticket cannot be closed yet: Build is failing on Windows with --enable-symbols=(mem|all). Don't know yet why. jan.nijtmans added on 2023-08-26 20:38:42: > The patch for tcl.h proposes an ABI change (on systems with 32-bit long). It can be considered for Tcl 9, but not 8.6 or 8.7. I think Tcl_Time.sec _must_ be updated to "long long" in Tcl 9.0, otherwise we can never be sure that 2038-related bugs won't show up on 32-bit platforms. Therefore: [19499b816370cd3f] Thanks! chrstphrchvz added on 2023-08-23 16:10:22: The patch for tclInterp.c resembles changes which were already made for [3e8074aea7]. I believe this ticket is a duplicate. chrstphrchvz added on 2023-08-23 16:03:25: The patch for tcl.h proposes an ABI change (on systems with 32-bit long). It can be considered for Tcl 9, but not 8.6 or 8.7. |