nodejs / nodejs/node

node:fs: calling writeFileSync/appendFileSync with negative 0 causes an assertion failure

Ouverte
#65,886 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

fs
Langage dominant
JavaScript
Étoiles
122k
Forks
37.3k
Merge moyen
4 j 2 h
PR mergées (30 j)
283

Description

Version

v26.8.1

Platform
Linux nixdesk 6.18.48 #1-NixOS SMP PREEMPT_DYNAMIC Fri Aug 28 06:22:54 UTC 2026 x86_64 GNU/Linux
Subsystem

fs

What steps will reproduce the bug?

require("node:fs").writeFileSync(-0, "")

or

require("node:fs").appendFileSync(-0, "")

How often does it reproduce? Is there a required condition?

it always happens on my machine. i have not tried on any other computer or os

What is the expected behavior? Why is that the expected behavior?

for it to do the same thing as positive zero i assume

What do you see instead?
❯ echo 'require("node:fs").writeFileSync(-0, "")' | node -

  #  node[264400]: void node::fs::WriteFileUtf8(const v8::FunctionCallbackInfo<v8::Value>&) at ../../src/node_file.cc:2764
  #  Assertion failed: (*path) != nullptr

----- Native stack trace -----

 1: 0x629c801c0228  [node]
 2: 0x629c801c0b97 node::Assert(node::AssertionInfo const&) [node]
 3: 0x629c801cda7b  [node]
 4: 0x729babdcfae9 

----- JavaScript stack trace -----

1: writeFileSync (node:fs:2997:20)
2: [stdin]:1:20
3: runScriptInThisContext (node:internal/vm:219:10)
4: node:internal/process/execution:485:12
5: [stdin]-wrapper:6:24
6: runScriptInContext (node:internal/process/execution:483:60)
7: evalFunction (node:internal/process/execution:317:30)
8: evalTypeScript (node:internal/process/execution:329:3)
9: node:internal/main/eval_stdin:51:5
10: node:internal/process/execution:239:5


fish: Job 1, 'echo 'require("node:fs").writeF…' terminated by signal SIGABRT (Abort)
Additional information

No response

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans src/node_file.cc, autour de l’assertion WriteFileUtf8 signalée à la ligne 2764, en utilisant les reproductions writeFileSync(-0, "") et appendFileSync(-0, ""). Suivez la manière dont les API fs gèrent l’argument de chemin et ajoutez une couverture pour le zéro négatif ; c’est terminé lorsque aucun des deux appels n’interrompt l’exécution et que tous deux se comportent comme un zéro positif.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, node.js
Domaine
backend, operating-systems
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
65/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.