Bug #18650
closedC Extensions Can Segmentation Fault on Ruby 2.7 Compiled with --with-jemalloc and --enabled-shared
Description
Greetings,
I've encountered a segmentation fault using the EventMachine gem on Ruby 2.7.5 compiled with configuration options --with-jemalloc and --enabled-shared on Ubuntu. This error is actually fixed in Ruby 3.1.0 via this commit: https://github.com/ruby/ruby/commit/737e4432b978eb4b9f5b10fb6cc6d9c883a5d17a and this commit https://github.com/ruby/ruby/commit/82d425515d2c1a14f964fc7a571e272f933bba7a . It has also recently been back ported to 3.0 but has not yet been released. I was wondering if this fix can be back ported to Ruby 2.7? It would be nice to not have a Linux specific condition in our build scripts to work around this issue. (Updating major Ruby versions is a lot of work for our application.)
I've attached two Dockerfiles for demonstration:
- eventMachineSegmentationFault-ruby275-20220318.Dockerfile - Creates the segmentation fault using Ruby 2.7.5. Run with: docker build -f eventMachineSegmentationFault-ruby275-20220318.Dockerfile .
- eventMachineWorkAround-ruby275-20220318.Dockerfile - Shows the issues is fixed by forcing 'ld' to use the --no-as-needed flag with Ruby 2.7.5. Run with: docker build -f eventMachineWorkAround-ruby275-20220318.Dockerfile .
I can provide Dockerfiles with minimal C extension code if needed.
FYI, related issue for Ruby 3.0 back port: https://bugs.ruby-lang.org/issues/18409
Thanks for your consideration.
Files