bug: RpcClient.start reports success after a signal exit during startup

Ouverte Adaptée aux débutants
#128 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
75/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
node.js, typescript
Domaine
backend, cli, testing

Piste de recherche

Le bug se trouve dans la méthode RpcClient.start() du fichier packages/coding-agent/src/modes/rpc/rpc-client.ts. Créez un script enfant de test minimal qui appelle process.kill(process.pid, "SIGTERM"). Utilisez-le pour reproduire le problème en instanciant le client et en appelant start(). Le correctif doit vérifier exitError et la sortie par signal en plus de exitCode. Exécutez la suite de tests existante avec npm run check et ./test.sh pour vous assurer que la régression passe après le correctif.

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

Description

untriaged
What happened?

RpcClient.start() resolves successfully when its child terminates with SIGTERM during the startup delay. A caller can therefore treat a dead agent as ready. The startup check only examines exitCode, which is null for a signal exit; the exit handler has already recorded the failure in exitError.

This is a reliability bug, not a security vulnerability. A small local fix checks the recorded error and signal exit as well. May I have lgtm approval to submit it with regression tests?

Steps to reproduce

On macOS, create a temporary child.mjs containing:

process.kill(process.pid, "SIGTERM");

Instantiate RpcClient from packages/coding-agent/src/modes/rpc/rpc-client.ts with cliPath pointing to that file, then await client.start(). It resolves rather than rejecting. The reproduction launches only this minimal Node child, not StepCode or any extensions.

Expected behavior

Reject startup with Agent process exited (code=null signal=SIGTERM) when the child has already terminated. The regression fails before the fix and passes afterward. Local npm run check and ./test.sh passed with Node 22, pnpm 9.15.9, and rg/fd available on PATH.

Version

main at b2dacb6d9e297f3c9931c1adbdc9d6e1e97ef048, macOS arm64.

Langage dominant
TypeScript
Étoiles
1k
Forks
68
Merge moyen
13 h 14 min
PR mergées (30 j)
66

Préparer son environnement

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.

Autres issues de stepfun-ai/Step-Code

Toutes les issues de stepfun-ai/Step-Code

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

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