Snapshot.load("").warmup! aborts the process (Check failed: !artifacts)
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 76/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- javascript, ruby
- 領域
- backend, embedded-iot
調査の方向性
ext/mini_racer_extension/mini_racer_v8.cc:946 の snapshot() から始め、空の blob の処理を 451 行目の v8_thread_init と比較します。issue の Ruby スニペットで再現し、既存の snapshot テストで warmup がカバーされているか確認します。ロードされた空の snapshot が abort せずにウォームアップするか、MiniRacer::SnapshotError を発生させ、報告された Context.new の動作が引き続き有効であれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- JavaScript
- スター
- 628
- フォーク
- 100
- 平均マージ
- 1日 20時間
- マージ済み PR(30日)
- 2
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
rubyjs/mini_racer のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
rubyjs/mini_racer#450 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
rubyjs/mini_racer#448 ·
-
bug/crash platform: linux/x86
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
rubyjs/mini_racer#422 · コメント 10 件 ·
-
platform: darwin/x86
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
rubyjs/mini_racer#388 · コメント 4 件 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
rubyjs/mini_racer#376 ·
rubyjs/mini_racer の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
rescript-lang/rescript#8996 ·
メンテナーはふだん 1 日以内に返信
-
check:passed logos:add
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 1/5 1〜3時間 初心者へのやさしさ 88/100
fossasia/visdom-dev#69 ·
メンテナーはふだん 3 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 74/100
-
建议写成 1949-オープン
難易度 1/5 1時間未満 初心者へのやさしさ 62/100
DeanChensj/jiangshan-map#133 ·
メンテナーはふだん 1 日以内に返信