oracle / truffleruby

A high performance implementation of the Ruby programming language, built on GraalVM.
https://www.graalvm.org/ruby/
Other
3.02k stars 185 forks source link

rb_tr_error causes `internal_raise': wrong number of arguments (given 3, expected 4) (ArgumentError) #1528

Closed deepj closed 5 years ago

deepj commented 5 years ago

web-console gem (one of default Rails dependencies) uses bindex gem (accessing exception bindings) which uses rb_tr_error. The gem doesn't support TruffleRuby itself but it's easy to add the support. Unfortunately, the compilation of extension fails on the following error:

mkdir -p tmp/x86_64-darwin/cruby/2.4.4
cd tmp/x86_64-darwin/cruby/2.4.4
~/.rubies/truffleruby-1.0.0-rc10/bin/truffleruby -I. ../../../../ext/bindex/extconf.rb
creating Makefile
cd -
cd tmp/x86_64-darwin/cruby/2.4.4
/usr/bin/make
compiling ../../../../ext/bindex/cruby.c
linking shared-object bindex/cruby.su
cd -
mkdir -p tmp/x86_64-darwin/stage/lib/bindex
install -c tmp/x86_64-darwin/cruby/2.4.4/cruby.su lib/bindex/cruby.su
cp tmp/x86_64-darwin/cruby/2.4.4/cruby.su tmp/x86_64-darwin/stage/lib/bindex/cruby.su
~/.rubies/truffleruby-1.0.0-rc10/bin/truffleruby -w -I"lib:test" -I"~/.gem/truffleruby/2.4.4/gems/rake-12.3.2/lib" "~/.gem/truffleruby/2.4.4/gems/rake-12.3.2/lib/rake/rake_test_loader.rb" "test/current_bindings_test.rb" "test/exception_test.rb"
~/.rubies/truffleruby-1.0.0-rc10/lib/truffle/truffle/cext.rb:1377:in `internal_raise': wrong number of arguments (given 3, expected 4) (ArgumentError)
    from ~/.rubies/truffleruby-1.0.0-rc10/lib/truffle/truffle/cext.rb:1377:in `rb_tr_error'
    from ruby.c:in `rb_tr_error'
    from ruby.c:in `rb_tracepoint_new'
    from ~/dev/bugs/truffleruby/bindex/ext/bindex/cruby.c:48:in `set_exception_bindings_on_raise'
    from ~/dev/bugs/truffleruby/bindex/ext/bindex/cruby.c:79:in `Init_cruby'
    from ~/.rubies/truffleruby-1.0.0-rc10/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:54:in `gem_original_require'
    from ~/.rubies/truffleruby-1.0.0-rc10/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from ~/dev/bugs/truffleruby/bindex/lib/bindex.rb:7:in `<top (required)>'
    from ~/.rubies/truffleruby-1.0.0-rc10/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:54:in `gem_original_require'
    from ~/.rubies/truffleruby-1.0.0-rc10/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from ~/dev/bugs/truffleruby/bindex/test/test_helper.rb:4:in `<top (required)>'
    from ~/dev/bugs/truffleruby/bindex/test/current_bindings_test.rb:1:in `gem_original_require'
    from ~/dev/bugs/truffleruby/bindex/test/current_bindings_test.rb:1:in `require'
    from ~/dev/bugs/truffleruby/bindex/test/current_bindings_test.rb:1:in `<top (required)>'
    from ~/.gem/truffleruby/2.4.4/gems/rake-12.3.2/lib/rake/rake_test_loader.rb:17:in `gem_original_require'
    from ~/.gem/truffleruby/2.4.4/gems/rake-12.3.2/lib/rake/rake_test_loader.rb:17:in `require'
    from ~/.gem/truffleruby/2.4.4/gems/rake-12.3.2/lib/rake/rake_test_loader.rb:17:in `block in <main>'
    from ~/.gem/truffleruby/2.4.4/gems/rake-12.3.2/lib/rake/rake_test_loader.rb:5:in `select'
    from ~/.gem/truffleruby/2.4.4/gems/rake-12.3.2/lib/rake/rake_test_loader.rb:5:in `<main>'
eregon commented 5 years ago

This shows rb_tr_error is broken, I'll fix that part.

eregon commented 5 years ago

With that fixed, it shows that rb_tracepoint_new is not yet implemented, which is then the same as #1450.

eregon commented 5 years ago

8580f780416b50b0a45a187b7a35e4099de071b6 fixes rb_tr_error, so this is now just a duplicate of #1450 and I'll close this issue, thank you for the report!