Snapshot.load("").warmup! aborts the process (Check failed: !artifacts)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 76/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript, ruby
- Lĩnh vực
- backend, embedded-iot
Hướng nghiên cứu
Bắt đầu với snapshot() trong ext/mini_racer_extension/mini_racer_v8.cc:946 và so sánh cách xử lý blob rỗng với v8_thread_init ở dòng 451. Tái hiện bằng đoạn mã Ruby trong issue và kiểm tra các bài kiểm thử snapshot hiện có có bao phủ warmup hay không. Hoàn tất khi snapshot rỗng đã tải được warmup mà không abort, hoặc phát sinh MiniRacer::SnapshotError, đồng thời hành vi Context.new được báo cáo vẫn hợp lệ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- JavaScript
- Star
- 628
- Fork
- 100
- Merge trung bình
- 1 ngày 20 giờ
- Pull request đã merge (30 ngày)
- 2
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của rubyjs/mini_racer
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
rubyjs/mini_racer#450 ·
-
Snapshot.load accepts a blob from another V8 version, and Context.new then kills the processĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
rubyjs/mini_racer#448 ·
-
bug/crash platform: linux/x86
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
rubyjs/mini_racer#422 · 10 bình luận ·
-
platform: darwin/x86
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
rubyjs/mini_racer#388 · 4 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
rubyjs/mini_racer#376 ·
Tất cả issue của rubyjs/mini_racer
Issue tương tự
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 88/100
fossasia/visdom-dev#69 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 74/100
-
建议写成 1949-Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
DeanChensj/jiangshan-map#133 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Frontend build fails with Frappe version-16: DataImport is no longer exported by @framework/uiĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
ew
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày