Project

General

Profile

Actions

Bug #19793

closed

Segmentation fault when requiring files after defining Object#method_missing

Added by sczimmer (Scott Zimmermann) 10 months ago. Updated 9 months ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [aarch64-linux]
[ruby-core:114328]

Description

I was doing ruby koans to learn ruby and I got a segmentation fault when it gets to the part where it uses Symbol.all_symbols. I realized it happens with any large Array, but I cannot reproduce in a small test script, just when it runs the whole ruby koans. So the minimal way to reproduce I have is:

download rubykoans: https://github.com/edgecase/ruby_koans/blob/master/download/rubykoans.zip?raw=true

unzip rubykoans.zip
cd koans
# fix deprecated method call for ruby 3.2
ruby -i -pe 'sub "File.exists", "File.exist"' neo.rb

Edit about_asserts.rb, adding these two statements to make a big array to the first koan:

  def test_assert_truth
    array = []
    99130.times { array << "a string"}
    assert false                # This should be true
  end

run ruby path_to_enlightenment.rb and get a backtrace like the attached backtrace.txt
I've tried this on two servers, ubuntu aarch64 and debian x86_64. On both it crashes with ruby 3.2.2 and works fine with ruby 3.1. On both I installed ruby built from source with RVM. On the server with more ram I had to increase the number more (above it's 99130) to get it to crash.


Files

backtrace.txt (21.7 KB) backtrace.txt sczimmer (Scott Zimmermann), 08/01/2023 04:00 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0