Open jkehres opened 3 years ago
Hello,
We use rutie
to build this extension. Reading its documentation (https://github.com/danielpclark/rutie#dynamic-vs-static-builds):
Dynamic vs Static Builds
Ruby needs to be compiled with the
--enable-shared
option. Dynamic linking to the Ruby library provides the best performance and best support. Static build support is incomplete for now.If using RBENV then the following is recommended:
CONFIGURE_OPTS=--enable-shared rbenv install 2.7.1
I'm sad to say that either you must use the dynamic library, or we need to contribute to rutie to fix the issues.
Note: We must at least test that Ruby is compiled with the --enable-shared
option to raise an approriate error message rather than a segfault. We may be able to find this information with RbConfig::CONFIG['ENABLE_SHARED']
. Are you willing to open a PR for that (just asking)?
For future reference, here are the relevant issues in rutie: https://github.com/danielpclark/rutie/issues?q=is%3Aissue+is%3Aopen+label%3A%22static+build+issue%22
And here is a similar (now closed) issue in wasmer-ruby: https://github.com/wasmerio/wasmer-ruby/issues/56
Thanks :-)!
Describe the bug
I'm using a statically linked version of Ruby 2.7.2 on macOS. I can build the gem (it links against
libruby.2.7-static.a
) but when I require the gem, I get a seg fault atlib/wasmer.rb:31
. If I use a dynamically linked version of Ruby 2.7.2 (where the gem links againstlibruby.2.7.dylib
) everything works fine.Steps to reproduce
RUBY_CONFIGURE_OPTS="--disable-shared" ruby-build 2.7.2 /path/to/install
)/path/to/install/lib
containslibruby.2.7-static.a
require 'wasmer'
Expected behavior
No seg fault occurs.
Actual behavior
Seg fault occurs.
Additional context
Repeating the same steps with
RUBY_CONFIGURE_OPTS="--enabled-shared"
works just fine.