nodejs / nodejs/node

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

Offen
#63,835 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

arm stale v22.x
Vorherrschende Sprache
JavaScript
Sterne
122k
Forks
37.3k
Ø Merge
4 T. 2 Std.
Gemergte PRs (30 T.)
283

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit test/parallel/test-fs-utimes-y2K38.js, insbesondere mit den Skip-Prüfungen und dem utimesSync-Aufruf, der in Zeile 46 gemeldet wird. Reproduziere den Test in einem Debian 13 armv7-Container und vergleiche seine touch/date-Erkennung mit den späteren Zeitstempeloperationen. Erledigt bedeutet, dass der Test dieses Dateisystemverhalten ohne einen unerwarteten EINVAL-Fehler korrekt behandelt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
debian, javascript, linux
Bereich
operating-systems, testing-qa
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
52/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.