Skip to content

parallel/test-temporal-with-zoneinfo fails on Linux s390x #61808

Description

@richardlau

When configured with --v8-enable-temporal-support, parallel/test-temporal-with-zoneinfo fails on Linux s390x.
e.g. https://ci.nodejs.org/job/node-test-commit-linuxone/53661/nodes=rhel9-s390x/console

18:10:11 not ok 3886 parallel/test-temporal-with-zoneinfo
18:10:11   ---
18:10:11   duration_ms: 86.44100
18:10:11   severity: fail
18:10:11   exitcode: 1
18:10:11   stack: |-
18:10:11     /home/iojs/build/workspace/node-test-commit-linuxone/test/parallel/test-temporal-with-zoneinfo.js:19
18:10:11     assert.strictEqual(pdt.toString(), '1969-07-20T20:17:00Z');
18:10:11                            ^
18:10:11     
18:10:11     Error: Temporal error: Internal error: Failed to load timezone info.
18:10:11         at Instant.toString (<anonymous>)
18:10:11         at Object.<anonymous> (/home/iojs/build/workspace/node-test-commit-linuxone/test/parallel/test-temporal-with-zoneinfo.js:19:24)
18:10:11         at Module._compile (node:internal/modules/cjs/loader:1811:14)
18:10:11         at Object..js (node:internal/modules/cjs/loader:1942:10)
18:10:11         at Module.load (node:internal/modules/cjs/loader:1532:32)
18:10:11         at Module._load (node:internal/modules/cjs/loader:1334:12)
18:10:11         at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
18:10:11         at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5)
18:10:11         at node:internal/main/run_main_module:33:47
18:10:11     
18:10:11     Node.js v26.0.0-pre
18:10:11   ...

for comparison, we're not seeing that fail on Linux on ppc64le or Linux on x64, which might suggest an Endianness issue.

cc @nodejs/platform-s390

Activity

  1. miladfarca commented on Feb 16, 2026

    @miladfarca
    Contributor
  2. richardlau commented on Mar 6, 2026

    @richardlau
    MemberAuthor

    hmm. Still trying to figure out the best way to float unicode-org/icu4x#7658.

    https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html suggests we should be able to do

    diff --git a/deps/crates/Cargo.toml b/deps/crates/Cargo.toml
    index ee208c16db1..aa3df8b3ef0 100644
    --- a/deps/crates/Cargo.toml
    +++ b/deps/crates/Cargo.toml
    @@ -30,3 +30,6 @@ version = "=0.1.0"
     default-features = false
     # This is necessary to enable a spec-compliance quirk when upgrading to v0.1.2
     # features = ["float64_representable_durations"]
    +
    +[patch.crates-io]
    +resb = { git="https://github.com/unicode-org/icu4x.git", rev="d310df8b3fb1cbfc551682ccf80f378ed152da8e" }

    but that ends up with version conflicts (probably because https://github.com/unicode-org/icu4x.git contains several crates):

    # cargo vendor
    error: failed to sync
    
    Caused by:
      found duplicate version of package `potential_utf v0.1.4` vendored from two sources:
    
            source 1: registry `crates-io`
            source 2: https://github.com/unicode-org/icu4x.git?rev=d310df8b3fb1cbfc551682ccf80f378ed152da8e#d310df8b
    #
  3. richardlau commented on Mar 6, 2026

    @richardlau
    MemberAuthor

    I tried to directly patch deps/crates/vendor/resb but cargo errors during build:
    https://ci.nodejs.org/job/node-test-commit-linuxone/53962/nodes=rhel8-s390x/console

    17:13:53 error: the listed checksum of `/home/iojs/build/workspace/node-test-commit-linuxone/deps/crates/vendor/resb/src/binary.rs` has changed:
    17:13:53 expected: 414b60bd9f2570c522b040cd87964c82329fa7e46cef470066d8723d66011df1
    17:13:53 actual:   e75277dca8931a0c7c93525bb5b88867cc0644c1af78fdf058591ce56cbabffd
    17:13:53 
    17:13:53 directory sources are not intended to be edited, if modifications are required then it is recommended that `[patch]` is used with a forked copy of the source
  4. richardlau commented on Mar 6, 2026

    @richardlau
    Author
  5. richardlau commented on Mar 6, 2026

    @richardlau
    MemberAuthor

    Okay, tried a different way:

    • Create a copy of the crate (under deps/crates/patches) and apply the changes to the copy.
    • Add to Cargo.toml a patch override pointing to the modified copy.
    diff --git a/deps/crates/Cargo.toml b/deps/crates/Cargo.toml
    index ee208c16db1..033c6f26939 100644
    --- a/deps/crates/Cargo.toml
    +++ b/deps/crates/Cargo.toml
    @@ -30,3 +30,6 @@ version = "=0.1.0"
     default-features = false
     # This is necessary to enable a spec-compliance quirk when upgrading to v0.1.2
     # features = ["float64_representable_durations"]
    +
    +[patch.crates-io]
    +resb = { path="patches/resb" }
    • Rerun cargo vendor. This has updated Cargo.lock and also deleted the vendored resb crate from the source tree (presumably because the build will now use the local copy pointed to by the Cargo.toml changes). Because the added files and deleted files are similar, git treats them as being moved.

    Opened PR with the above: #62138

  6. legendecas commented on Mar 6, 2026

    @legendecas
    Member

    Hm, I think the patch in #61808 (comment) will try to bring in dependency of resb from the patched git repo, as rust-lang/cargo#10310. A local patch of the single resb could be a simpler change.

  7. richardlau commented on Mar 6, 2026

    @richardlau
    MemberAuthor

    Yes, it seems that because https://github.com/unicode-org/icu4x.git contains more than one crate, attempting to patch one of them adds https://github.com/unicode-org/icu4x.git as a source for all of the crates in the repository (and not just the one we want to patch).

  8. added a commit that references this issue on Mar 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions