Snapshot.load("").warmup! aborts the process (Check failed: !artifacts)
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
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de rubyjs/mini_racer
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
rubyjs/mini_racer#450 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
rubyjs/mini_racer#448 ·
-
bug/crash platform: linux/x86
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 42/100
rubyjs/mini_racer#422 · 10 comentários ·
-
platform: darwin/x86
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
rubyjs/mini_racer#388 · 4 comentários ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
rubyjs/mini_racer#376 ·
Todas as issues de rubyjs/mini_racer
Issues semelhantes
-
type/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 1 dia
-
Update to mocha 12.xAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
rescript-lang/rescript#8996 ·
Mantenedores costumam responder em até 1 dia
-
Add: Ministerstvoidey.ruAbertacheck:passed logos:add
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100