Project

General

Profile

Actions

Bug #21802

open

segmentation fault when installing gems on CI

Bug #21802: segmentation fault when installing gems on CI

Added by luizkowalski (Luiz Kowalski) about 14 hours ago. Updated about 10 hours ago.

Status:
Open
Assignee:
-
Target version:
-
ruby -v:
ruby 3.4.8 (2025-12-17 revision 995b59f666) +YJIT +PRISM [x86_64-linux]
[ruby-core:124351]

Description

hey!

recently, we updated to Bundler v4 (currently running v4.0.3) and Ruby 3.4.8. Since then, one of our CircleCI steps has been failing repeatedly, often without logs. Sometimes it does fail with a log

Installing faraday-typhoeus 1.1.0
Fetching http 5.3.1
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:369: [BUG] Segmentation fault at 0x00007f336df8c100
ruby 3.4.8 (2025-12-17 revision 995b59f666) +PRISM [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0026 p:---- s:0142 e:000141 CFUNC  :each_value
c:0025 p:0078 s:0138 e:000137 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:369
c:0024 p:0030 s:0131 e:000130 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:678
c:0023 p:0005 s:0125 e:000124 BLOCK  /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:697
c:0022 p:0053 s:0121 e:000120 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package/tar_reader.rb:67
c:0021 p:0005 s:0114 e:000113 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:696
c:0020 p:0011 s:0108 e:000107 BLOCK  /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:626
c:0019 p:0020 s:0104 e:000103 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package/tar_reader.rb:25
c:0018 p:0007 s:0098 e:000097 BLOCK  /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:623 [FINISH]
c:0017 p:---- s:0094 e:000093 CFUNC  :open
c:0016 p:0013 s:0088 e:000087 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package/file_source.rb:30
c:0015 p:0015 s:0083 e:000082 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:622
c:0014 p:0008 s:0078 e:000077 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:603
c:0013 p:0005 s:0074 e:000073 METHOD /usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/installer.rb:254
c:0012 p:0020 s:0070 e:000069 METHOD /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/rubygems_gem_installer.rb:140
c:0011 p:0196 s:0066 e:000065 METHOD /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/source/rubygems.rb:195
c:0010 p:0025 s:0052 e:000051 METHOD /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/installer/gem_installer.rb:54
c:0009 p:0003 s:0048 e:000047 METHOD /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/installer/gem_installer.rb:17
c:0008 p:0037 s:0042 e:000041 METHOD /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/installer/parallel_installer.rb:133
c:0007 p:0007 s:0033 e:000032 BLOCK  /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/installer/parallel_installer.rb:124
c:0006 p:0009 s:0028 e:000027 METHOD /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/worker.rb:62
c:0005 p:0030 s:0021 e:000019 BLOCK  /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/worker.rb:57
c:0004 p:0017 s:0016 e:000015 METHOD <internal:kernel>:168
c:0003 p:0004 s:0011 e:000010 METHOD /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/worker.rb:54
c:0002 p:0005 s:0006 e:000005 BLOCK  /home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/worker.rb:90 [FINISH]
c:0001 p:---- s:0003 e:000002 DUMMY  [FINISH]

-- Ruby level backtrace information ----------------------------------------
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/worker.rb:90:in 'block (2 levels) in create_threads'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/worker.rb:54:in 'process_queue'
<internal:kernel>:168:in 'loop'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/worker.rb:57:in 'block in process_queue'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/worker.rb:62:in 'apply_func'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/installer/parallel_installer.rb:124:in 'block in worker_pool'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/installer/parallel_installer.rb:133:in 'do_install'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/installer/gem_installer.rb:17:in 'install_from_spec'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/installer/gem_installer.rb:54:in 'install'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/source/rubygems.rb:195:in 'install'
/home/circleci/.rubygems/gems/bundler-4.0.2/lib/bundler/rubygems_gem_installer.rb:140:in 'spec'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/installer.rb:254:in 'spec'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:603:in 'spec'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:622:in 'verify'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package/file_source.rb:30:in 'with_read_io'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package/file_source.rb:30:in 'open'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:623:in 'block in verify'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package/tar_reader.rb:25:in 'new'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:626:in 'block (2 levels) in verify'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:696:in 'verify_files'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package/tar_reader.rb:67:in 'each'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:697:in 'block in verify_files'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:678:in 'verify_entry'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:369:in 'digest'
/usr/*****/lib/ruby/site_ruby/3.4.0/rubygems/package.rb:369:in 'each_value'

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

-- Machine register context ------------------------------------------------
 RIP: 0x00007f336df8bffe RBP: 0x00007f333dd38270 RSP: 0x00007f333dd38190
 RAX: 0x00007f336df8c100 RBX: 0x000055fb7a768350 RCX: 0x000055fb7956d330
 RDX: 0x0000000000000000 RDI: 0x00007f336e501740 RSI: 0x0000000000000000
  R8: 0x0000000000000003  R9: 0x000055fb7fd9ab78 R10: 0x0000000055550083
 R11: 0x000055fb7fe9a1c1 R12: 0x00007f328c55e568 R13: 0x00007f328c55e568
 R14: 0x000055fb7fe9a1a8 R15: 0x0000000000000000 EFL: 0x0000000000010202

-- C level backtrace information -------------------------------------------
/bin/bash: line 5:  1060 Killed                  bundle install

while trying to find the root cause, I noticed that rolling back to Ruby 3.4.7 solves the issue .

there's not a lot going on with the CI step, too:

verify-contract:
  docker:
    - image: cimg/ruby:3.4.8-node
      environment:
        RAILS_ENV: test
        MYSQL_HOST: 127.0.0.1
        MYSQL_STATSDB_HOST: 127.0.0.1
        CONTRACT_URL: << pipeline.parameters.contract_url >>
        CONSUMER_NAME: << pipeline.parameters.consumer_name >>
        CONSUMER_VERSION: << pipeline.parameters.consumer_version >>
        PROVIDER_VERSION: << pipeline.parameters.provider_version >>
        PUBLISH_VERIFICATION_RESULTS: true
        DYNAMODB_AWS_REGION: us-east-1
        DYNAMODB_AWS_ACCESS_KEY_ID: local
        DYNAMODB_AWS_SECRET_ACCESS_KEY: local
        DYNAMODB_AWS_ENDPOINT: http://dynamodb:8000
    - image: cimg/mysql:8.0.42
      environment:
        MYSQL_ALLOW_EMPTY_PASSWORD: 1
    - image: cimg/redis:8.4.0
    - image: amazon/dynamodb-local:latest
      name: dynamodb
      command: ["-jar", "DynamoDBLocal.jar", "-sharedDb"]
  steps:
    - checkout
    - vault/get-secrets:
        template-preset: "ruby-gem-read"
    - run:
        name: Install bundler
        command: |
          gem install bundler
    - run:
        name: Ruby Environment Information
        command: |
          gem env
          bundle config
    - run:
        name: Install deps and verify contracts
        command: |
          if [ ! -z "${PROVIDER_VERSION}" ]; then
            git checkout ${PROVIDER_VERSION}
          fi
          bundle config https://rubygems.pkg.github.com/xxxxx "${RUBYGEMS_USER}:${RUBYGEMS_PASSWORD}"
          bundle install
          bundle clean --force
          bundle exec rake database:recreate_all
          if [[ -z "$CONTRACT_URL" ]]; then
            bundle exec rake pact:verify
          else
            bundle exec rake pact:verify:at[$CONTRACT_URL] || true
          fi

Updated by luizkowalski (Luiz Kowalski) about 14 hours ago Actions #1

  • ruby -v changed from ruby 3.4.8 (2025-12-17 revision 995b59f666) +YJIT +PRISM [aarch64-linux] to ruby 3.4.8 (2025-12-17 revision 995b59f666) +YJIT +PRISM [x86_64-linux]

Updated by ufuk (Ufuk Kayserilioglu) about 11 hours ago Actions #2 [ruby-core:124353]

Please post the C level backtrace as well. Usually that's very helpful.

Updated by luizkowalski (Luiz Kowalski) about 10 hours ago Actions #3 [ruby-core:124354]

ufuk (Ufuk Kayserilioglu) wrote in #note-2:

Please post the C level backtrace as well. Usually that's very helpful.

any idea how I could do that? the job inside the CI most of the time simply dies with an output like this:

/bin/bash: line 5:  1058 Killed                  bundle install

Exited with code exit status 137

is there an env var I can set maybe that would make it more verbose in this case?

Actions

Also available in: PDF Atom