From: "ojab (ojab ojab) via ruby-dev" Date: 2023-01-01T19:39:34+00:00 Subject: [ruby-dev:52033] [Ruby master Bug#14387] Ruby 2.5 を Alpine Linux で実行すると比較的浅めで SystemStackError 例外になる Issue #14387 has been updated by ojab (ojab ojab). Any update on this? ---------------------------------------- Bug #14387: Ruby 2.5 ��� Alpine Linux ������������������������������������ SystemStackError ��������������� https://bugs.ruby-lang.org/issues/14387#change-100931 * Author: koshigoe (Masataka SUZUKI) * Status: Open * Priority: Normal * ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux-musl] * Backport: 2.3: DONTNEED, 2.4: DONTNEED, 2.5: REQUIRED ---------------------------------------- CircleCI ��� Alpine Linux ������������ Ruby 2.5.0 ��� Rubocop ���������������������������������������������(Ruby 2.4.3 ���������������������������������)��� Ruby ��������������������������������������������������������������������������������������������������������������������������������� ���������������������������������������������Ruby ������������������������������������ Alpine Linux ������������������������������������������������������������������������������ Alpine Linux ��� Tread stack size ������������������������������Ruby 2.5.0 ������������������������������������������������������������ https://wiki.musl-libc.org/functional-differences-from-glibc.html#Thread-stack-size ## ������ ������������������������������������������������������������������������������������ ~~~ ruby # test.rb n = 100000 res = {} 1.upto(n).to_a.inject(res) do |r, i| r[i] = {} end def f(x) x.each_value { |v| f(v) } end f(res) ~~~ Ruby 2.4.3 ������������������������ 10061 levels ��������������������������������� ~~~ % docker container run \ -v (pwd):/mnt/my --rm \ ruby:2.4.3-alpine3.7 \ ruby -v /mnt/my/test.rb ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux-musl] /mnt/my/test.rb:9:in `each_value': stack level too deep (SystemStackError) from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' ... 10061 levels... from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:12:in `
' ``` ��������� Ruby 2.5.0 ������������������������ 134 level ��������������������������������� ``` % docker container run \ -v (pwd):/mnt/my --rm \ test/ruby:trunk-alpine3.7 \ ruby -v /mnt/my/test.rb ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux-musl] /mnt/my/test.rb:9:in `each_value': stack level too deep (SystemStackError) from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' ... 134 levels... from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:12:in `
' ``` ���������Ruby trunk ������������������������ 2.5.0 ������������������������������������ ``` ruby 2.6.0dev (2018-01-24 trunk 62017) [x86_64-linux-musl] /mnt/my/test.rb:9:in `each_value': stack level too deep (SystemStackError) from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:9:in `block in f' ... 134 levels... from /mnt/my/test.rb:9:in `block in f' from /mnt/my/test.rb:9:in `each_value' from /mnt/my/test.rb:9:in `f' from /mnt/my/test.rb:12:in `
' ``` ��� trunk ��� Docker ������������������������������ Dockerfile ������������ https://gist.github.com/koshigoe/509be02a3580cdfc7a2cc45a4e6e44c5 ---Files-------------------------------- 0001-thread_pthread.c-make-get_main_stack-portable-on-lin.patch (2.61 KB) -- https://bugs.ruby-lang.org/