Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Snapshot.load("").warmup! aborts the process (Check failed: !artifacts)

Aberta Para iniciantes
#449 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
76/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
javascript, ruby
Domínio
backend, embedded-iot

Direção de pesquisa

Comece por snapshot() em ext/mini_racer_extension/mini_racer_v8.cc:946 e compare o tratamento de blobs vazios com v8_thread_init na linha 451. Reproduza o problema com o trecho de Ruby da issue e verifique se os testes de snapshot existentes cobrem o warmup. O trabalho estará concluído quando um snapshot vazio carregado passar pelo aquecimento sem abortar ou gerar MiniRacer::SnapshotError, enquanto o comportamento relatado de Context.new continuar válido.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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.

Linguagem predominante
JavaScript
Estrelas
628
Forks
100
Merge médio
1d 20h
PRs com merge (30d)
2

Preparar o ambiente

  • Inclui um Dockerfile ou arquivo Docker Compose
  • Sem modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de rubyjs/mini_racer

Todas as issues de rubyjs/mini_racer

Issues semelhantes

Mais issues de JavaScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.