images icon indicating copy to clipboard operation
images copied to clipboard

Segfault on Ruby 3.3.0 on linux-aarch64 solved in https://bugs.ruby-lang.org/issues/20085

Open viktorianer opened this issue 1 year ago • 4 comments
trafficstars

Considering the resolution provided in Ruby Issue #20085, it may be beneficial for the devcontainers project to integrate any necessary patches or workarounds. This could involve updating the Ruby version used or applying patches as specified in the Ruby issue tracker.

This issue impacts development environments that rely on Ruby 3.3.0 running on linux-aarch64. The resolution in the Ruby issue tracker suggests that an update or patch is available to mitigate this problem.

Thank you for looking into this matter to enhance the stability and compatibility of Ruby on linux-aarch64 within devcontainers.

Expected Behavior

Ruby 3.3.0 should run without segmentation faults on linux-aarch64 platforms.

Current Behavior

A segmentation fault occurs under specific conditions detailed in the aforementioned Ruby issue.

Details: Segfault on Ruby 3.3.0 on linux-aarch64
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:14: [BUG] Segmentation fault at 0x0077ffff907a06c0
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [aarch64-linux]

-- Control frame information -----------------------------------------------
c:0047 p:---- s:0257 e:000256 CFUNC  :resume
c:0046 p:0007 s:0253 E:000610 BLOCK  /usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:14 [FINISH]
c:0045 p:---- s:0250 e:000249 CFUNC  :synchronize
c:0044 p:0026 s:0246 E:002298 METHOD /usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:12
c:0043 p:0007 s:0241 e:000240 CLASS  /usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:18
c:0042 p:0025 s:0238 e:000237 TOP    /usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:5 [FINISH]
c:0041 p:---- s:0235 e:000234 CFUNC  :require
c:0040 p:0011 s:0230 e:000229 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0039 p:0131 s:0224 e:000223 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0038 p:0041 s:0215 e:000214 TOP    /usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb:7 [FINISH]
c:0037 p:---- s:0212 e:000211 CFUNC  :require
c:0036 p:0011 s:0207 e:000206 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0035 p:0131 s:0201 e:000200 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0034 p:0047 s:0192 e:000191 TOP    /usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomics.rb:8 [FINISH]
c:0033 p:---- s:0189 e:000188 CFUNC  :require
c:0032 p:0011 s:0184 e:000183 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0031 p:0131 s:0178 e:000177 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0030 p:0029 s:0169 e:000168 TOP    /usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent.rb:6 [FINISH]
c:0029 p:---- s:0166 e:000165 CFUNC  :require
c:0028 p:0011 s:0161 e:000160 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0027 p:0131 s:0155 e:000154 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0026 p:0017 s:0146 e:000145 TOP    /usr/local/rvm/gems/default/gems/activesupport-7.0.8.1/lib/active_support/logger_thread_safe_level.rb:5 [FINISH]
c:0025 p:---- s:0143 e:000142 CFUNC  :require
c:0024 p:0011 s:0138 e:000137 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0023 p:0131 s:0132 e:000131 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0022 p:0017 s:0123 e:000122 TOP    /usr/local/rvm/gems/default/gems/activesupport-7.0.8.1/lib/active_support/logger_silence.rb:5 [FINISH]
c:0021 p:---- s:0120 e:000119 CFUNC  :require
c:0020 p:0011 s:0115 e:000114 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0019 p:0131 s:0109 e:000108 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0018 p:0005 s:0100 e:000099 TOP    /usr/local/rvm/gems/default/gems/activesupport-7.0.8.1/lib/active_support/logger.rb:3 [FINISH]
c:0017 p:---- s:0097 e:000096 CFUNC  :require
c:0016 p:0011 s:0092 e:000091 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0015 p:0131 s:0086 e:000085 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0014 p:0023 s:0077 e:000076 TOP    /usr/local/rvm/gems/default/gems/activesupport-7.0.8.1/lib/active_support.rb:29 [FINISH]
c:0013 p:---- s:0074 e:000073 CFUNC  :require
c:0012 p:0011 s:0069 e:000068 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0011 p:0131 s:0063 e:000062 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0010 p:0005 s:0054 e:000053 TOP    /usr/local/rvm/gems/default/gems/railties-7.0.8.1/lib/rails/command.rb:3 [FINISH]
c:0009 p:---- s:0051 e:000050 CFUNC  :require
c:0008 p:0011 s:0046 e:000045 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0007 p:0131 s:0040 e:000039 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0006 p:0005 s:0031 e:000030 TOP    /usr/local/rvm/gems/default/gems/railties-7.0.8.1/lib/rails/commands.rb:3 [FINISH]
c:0005 p:---- s:0026 e:000025 CFUNC  :require
c:0004 p:0011 s:0021 e:000020 METHOD <internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37
c:0003 p:0131 s:0015 e:000014 METHOD /usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30
c:0002 p:0024 s:0006 e:000005 EVAL   bin/rails:4 [FINISH]
c:0001 p:0000 s:0003 E:001620 DUMMY  [FINISH]

-- Ruby level backtrace information ----------------------------------------
bin/rails:4:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/railties-7.0.8.1/lib/rails/commands.rb:3:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/railties-7.0.8.1/lib/rails/command.rb:3:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/activesupport-7.0.8.1/lib/active_support.rb:29:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/activesupport-7.0.8.1/lib/active_support/logger.rb:3:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/activesupport-7.0.8.1/lib/active_support/logger_silence.rb:5:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/activesupport-7.0.8.1/lib/active_support/logger_thread_safe_level.rb:5:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent.rb:6:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomics.rb:8:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb:7:in `<main>'
/usr/local/rvm/gems/default/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/usr/local/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:5:in `<main>'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:18:in `<module:Concurrent>'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:12:in `mutex_owned_per_thread?'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:12:in `synchronize'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:14:in `block in mutex_owned_per_thread?'
/usr/local/rvm/gems/default/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb:14:in `resume'

-- Threading information ---------------------------------------------------
Total ractor count: 1
Ruby thread count for this ractor: 1

-- Machine register context ------------------------------------------------
  x0: 0x0000aaaad29db9f0  x1: 0x0000aaaad3796be0  x2: 0x0000ffffee223a50
  x3: 0x0000ffff761aff60  x4: 0x0000ffff761b0018  x5: 0x0000ffff761d0000
  x6: 0x0000ffff90cf5b88  x7: 0x0000000000000000 x18: 0x0000000000000000
 x19: 0x0000000000000000 x20: 0x0000000000000000 x21: 0x0000000000000000
 x22: 0x0000000000000000 x23: 0x0000000000000000 x24: 0x0000000000000000
 x25: 0x0000000000000000 x26: 0x0000000000000000 x27: 0x0000000000000000
 x28: 0x0000000000000000 x29: 0x0000000000000000  sp: 0x0000ffff761b0000
 fau: 0x0077ffff907a06c0

-- C level backtrace information -------------------------------------------

== Command ["bin/rails db:prepare"] failed ==
[32750 ms] updateContentCommand failed with exit code 1. Skipping any further user-provided commands.
Error: Command failed: /bin/sh -c bin/setup
    at R7 (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:235:130)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Am (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:227:4393)
    at async Xw (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:227:3738)
    at async $w (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:227:2814)
    at async fa (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:227:2386)
    at async CtA (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:409:3471)
    at async UtA (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:481:3865)
    at async $C (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:481:4807)
    at async QrA (/opt/homebrew/Cellar/devcontainer/0.58.0/libexec/lib/node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js:661:13255)
{"outcome":"error","message":"Command failed: /bin/sh -c bin/setup","description":"The updateContentCommand in the devcontainer.json failed.","containerId":"17d1f69694e906eddf2922befb57842c13d3cba51b5a3415f1a84e03cdc6b261"}

viktorianer avatar Mar 22 '24 23:03 viktorianer

Thanks for the details. @gauravsaini04 Can you help investigate this issue? Thanks!

samruddhikhandale avatar Apr 02 '24 17:04 samruddhikhandale

Ruby 3.3.1 was released today which includes a fix for this bug. It also includes some important CVE fixes (details) which were back ported and released as 3.2.4, 3.1.5 and 3.0.7.

andrewn617 avatar Apr 23 '24 20:04 andrewn617

Thanks @andrewn617 for the update, we'll shortly have a new release for the image. Thanks!

samruddhikhandale avatar Apr 23 '24 21:04 samruddhikhandale

Started a release https://github.com/devcontainers/images/pull/1035

samruddhikhandale avatar Apr 24 '24 23:04 samruddhikhandale

Closing as the issue should be fixed with latest release.

samruddhikhandale avatar May 02 '24 16:05 samruddhikhandale