dearblue · GitHub

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

Read the original on github.com ↗