Snapshot.load("").warmup! aborts the process (Check failed: !artifacts)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 76/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript, ruby
- Domaine
- backend, embedded-iot
Piste de recherche
Commencez par snapshot() dans ext/mini_racer_extension/mini_racer_v8.cc:946 et comparez la gestion des blobs vides avec celle de v8_thread_init à la ligne 451. Reproduisez le problème avec l’extrait Ruby de l’issue et vérifiez si les tests de snapshot existants couvrent le warmup. Le travail est terminé lorsqu’un snapshot vide chargé est réchauffé sans provoquer d’abandon, ou déclenche MiniRacer::SnapshotError, tandis que le comportement signalé de Context.new reste valide.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Calling warmup! on an empty loaded snapshot aborts inside V8. Using the same empty snapshot with Context.new works and evaluates 1+1 to 2.
Reproduce
require "mini_racer"
MiniRacer::Snapshot.load("").warmup!("1")
puts "not reached"
What happens
#
# Fatal error in , line 0
# Check failed: !artifacts.
Exit status 133 (SIGTRAP), followed by a native backtrace through v8_thread_main.
Expected
The warmup should run from V8's built-in snapshot, as Context.new does for an empty blob, or raise MiniRacer::SnapshotError.
Cause
snapshot() passes the blob to v8::SnapshotCreator for every warmup, including when its size is zero (existing_blob = is_warmup ? &blob : nullptr at ext/mini_racer_extension/mini_racer_v8.cc:946). In contrast, v8_thread_init sets params.snapshot_blob only for a non-empty blob (ext/mini_racer_extension/mini_racer_v8.cc:451). Passing nullptr for an empty warmup blob would match the Context.new behavior. This change has not been tested.
Environment
- mini_racer 0.22.1 with libv8-node 24.12.0.1 (V8 13.6.233.17-node.37)
- Ruby 3.4.2 x86_64-linux
- Fedora 44
Reproduced in 3 of 3 runs.
- Langage dominant
- JavaScript
- Étoiles
- 628
- Forks
- 100
- Merge moyen
- 1 j 20 h
- PR mergées (30 j)
- 2
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de rubyjs/mini_racer
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
rubyjs/mini_racer#450 ·
-
Snapshot.load accepts a blob from another V8 version, and Context.new then kills the processOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
rubyjs/mini_racer#448 ·
-
bug/crash platform: linux/x86
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
rubyjs/mini_racer#422 · 10 commentaires ·
-
platform: darwin/x86
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
rubyjs/mini_racer#388 · 4 commentaires ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
rubyjs/mini_racer#376 ·
Toutes les issues de rubyjs/mini_racer
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
thedevs-network/kutt#1059 ·
-
good first issue help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
0. Needs triage 35-feedback bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour