nodejs / nodejs/node

[v22.x] `parallel/test-fs-utimes-y2K38` fails with `Error: EINVAL: invalid argument, utime` on armv7

Open
#63,835 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

arm stale v22.x
Dominant language
JavaScript
Stars
122k
Forks
37.3k
Avg merge
4d 2h
Merged PRs (30d)
283

Description

parallel/test-fs-utimes-y2K38 is failing in Debian 13 armv7 containers in our Jenkins CI.

Refs: https://github.com/nodejs/build/pull/4358#issuecomment-4662053132

e.g.

16:23:21 not ok 1312 parallel/test-fs-utimes-y2K38
16:23:21   ---
16:23:21   duration_ms: 328.27900
16:23:21   severity: fail
16:23:21   exitcode: 1
16:23:21   stack: |-
16:23:21     node:fs:2199
16:23:21       binding.utimes(
16:23:21               ^
16:23:21     
16:23:21     Error: EINVAL: invalid argument, utime '/home/iojs/tmp/.tmp.1312/test-utimes-precision'
16:23:21         at Object.utimesSync (node:fs:2199:11)
16:23:21         at Object.<anonymous> (/home/iojs/build/workspace/node-test-binary-armv7l/test/parallel/test-fs-utimes-y2K38.js:46:4)
16:23:21         at Module._compile (node:internal/modules/cjs/loader:1781:14)
16:23:21         at Module._extensions..js (node:internal/modules/cjs/loader:1913:10)
16:23:21         at Module.load (node:internal/modules/cjs/loader:1505:32)
16:23:21         at Module._load (node:internal/modules/cjs/loader:1309:12)
16:23:21         at wrapModuleLoad (node:internal/modules/cjs/loader:254:19)
16:23:21         at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
16:23:21         at node:internal/main/run_main_module:36:49 {
16:23:21       errno: -22,
16:23:21       code: 'EINVAL',
16:23:21       syscall: 'utime',
16:23:21       path: '/home/iojs/tmp/.tmp.1312/test-utimes-precision'
16:23:21     }
16:23:21     
16:23:21     Node.js v22.22.4-pre
16:23:21   ...

The test is skipped on the earlier Debian 11 armv7 containers, nor on the Ubuntu 22.04 containers:
e.g.

10:13:26 ok 1461 parallel/test-fs-utimes-y2K38 # skip File system appears to lack Y2K38 support (touch failed)
10:13:26   ---
10:13:26   duration_ms: 135.82300
10:13:26   ...

which indicates that the underlying filesystem doesn't support y2k38. However on Debian 13 we are not skipping (i.e. the touch and date sniff tests pass) and the invalid argument is being thrown when the later parts of the test run.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with test/parallel/test-fs-utimes-y2K38.js, especially the skip checks and the utimesSync call reported at line 46. Reproduce the test in a Debian 13 armv7 container and compare its touch/date detection with the later timestamp operations. Done means the test correctly handles this filesystem behavior without an unexpected EINVAL failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
debian, javascript, linux
Domain
operating-systems, testing-qa
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.