RuntimeError: memory access out of bounds in yoga-layout WASM during "Loading sessions"

Ouverte
#839 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
52/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
javascript, node.js, wasm
Domaine
cli

Piste de recherche

Reproduisez le crash intermittent au démarrage pendant « Loading sessions… ». Lisez renderer.js:32 et les chemins de cleanupYogaNode dans removeChild et removeChildFromContainer, puis suivez la manière dont le callback de rendu avec debounce conserve les nœuds. Le travail est terminé lorsque le chargement des sessions ne déclenche plus le crash d’accès mémoire de WASM lors de la lecture de la mise en page.

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

Description

Crash Report

Error
✖ CRITICAL: Uncaught Exception!
✖ ERROR → RuntimeError
ℹ REASON → memory access out of bounds
Stack Trace
RuntimeError: memory access out of bounds
    at wasm://wasm/000460e2:wasm-function[215]:0xd5ef
    at wasm://wasm/000460e2:wasm-function[185]:0xcf8c
    at X.getComputedWidth (yoga-wasm-base64-esm.js:33:52)
    at renderer (renderer.js:32:49)
    at onRender (ink.js:348:56)
    at debounce (debounce.mjs:12:17)
    at invoke (debounce.mjs:45:9)
    at onTimerEnd (debounce.mjs:51:17)
    at Timeout._onTimeout (debounce.mjs:59:4)
Environment
  • Command Code version: 1.53.0
  • Node.js: v26.1.0 (via nvm)
  • yoga-layout: 3.2.1
  • ink: 7.1.0
  • OS: Linux
Reproduction

This crash occurs during "Loading sessions…" — it happens intermittently when the app starts up and loads saved sessions.

Trace ID

3a1270ebb1c389e7db6257397a21f5e0

Analysis

The crash happens in renderer.js:32 when node.yogaNode.getComputedWidth() is called on a yoga node whose WASM memory has already been freed. This appears to be a race condition between:

  1. React's reconciler destroying nodes (calling freeRecursive() via cleanupYogaNode in removeChild/removeChildFromContainer)
  2. The debounced render callback still trying to traverse the node tree and compute layout on the now-deallocated WASM node

This is triggered when rapid state changes occur (e.g., mounting/unmounting components during "Loading sessions"), causing a yoga node to be freed in one tick while the throttled renderer still holds a reference.

Suggested Fix

Add a guard in renderer.js to check whether yogaNode is still valid before calling getComputedWidth(), or wrap the WASM call in a try-catch to handle freed nodes gracefully.

Langage dominant
Aucune donnée de langage
Étoiles
4k
Forks
350
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

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 CommandCodeAI/command-code

Toutes les issues de CommandCodeAI/command-code

Issues similaires

Plus d'issues CLI

Recevez les nouvelles issues par e-mail

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