If task context switching occurs while a C function boundary has been exceeded, a SIGSEGV is generated.
The mruby revision is 572c674 .
-
example ruby code
Task.new do Module.new do sleep 0.1 end end Task.new do sleep 0.1 end Task.run
-
build configuration file
MRuby::Lockfile.disable rescue nil MRuby::Build.new do |conf| toolchain #enable_debug gem core: "mruby-bin-mruby" gem core: "mruby-task" end
-
run
% build/host/bin/mruby crash.rb zsh: segmentation fault (core dumped) build/host/bin/mruby crash.rb
-
run with
conf.enable_debug% build/host/bin/mruby crash.rb Assertion failed: (c->ci == c->cibase || (c->ci - c->cibase) == cioff - 1), function mrb_vm_run, file /var/tmp/mruby/src/vm.c, line 1615. zsh: abort (core dumped) build/host/bin/mruby crash.rb