Programming Journal

学習したことの整理用です。

【エラー解消メモ】[BUG] Segmentation fault

エラー

ローカルではRSpecが通るのに、CircleCI上で落ちてしまう。

環境

Rails 6.0.3

Dockerのimageは以下のとおり

jobs:
  build:
    docker:
      - image: circleci/ruby:2.7.2-node-browsers-legacy

エラー内容

f:id:Study-Diary:20210105193245p:plain
[BUG] Segmentation fault

今まで遭遇したことのないSegmentation fault エラー文をダウンロードして見てみる。

f:id:Study-Diary:20210105193550p:plain
エラー文(抜粋)

..*..................../home/circleci/repo/vendor/bundle/ruby/2.7.0/gems/sassc-2.4.0/lib/sassc/engine.rb:43: [BUG] Segmentation fault at 0x0000000000000000
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]

sasscが問題のよう。 公式のissueを見てみると、同じエラーの人がいて、解決方法も載っていました。

segfault on 2.3.0 · Issue #197 · sass/sassc-ruby · GitHub

Same here at sassc-2.3.0/lib/sassc/engine.rb:43: [BUG] Segmentation fault at 0x0000000000000000 ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]

解決方法

以下を追加

Rails.application.config.assets.configure do |env|
  env.export_concurrent = false
end

やっと通った

f:id:Study-Diary:20210105195817p:plain
success!

原因

sprocketsとwebpackerのコンパイルが並行して行われているため、問題が起こる…らしいので、先の解決方法のコードで並行処理をしないように設定する。
正直、よくわからない

gem 'sprockets' 4.0での並列処理でデッドロックしてしまう問題について - Qiita