msdyum
@msdyum (msdyum)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

herokuにデプロイができない Segmentation fault

解決したいこと

初心者です。herokuデプロイ時に出てくるエラーを修正したいです。

環境は以下です
ruby 3.1.4
rails 6.1.3.2
mysql2 0.5.6
docker 3
circleci 2.1
herokuを本番環境にしています

発生している問題・エラー

/tmp/build_c0774821/bin/rake: [BUG] Segmentation fault at 0x00007f80c5774008
ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]

自分で試したこと

ChatGPTと相談しつつ、以下の手順を試しました。
①rubyの再インストール

$ rbenv uninstall 3.1.4
$ rbenv install 3.1.4
$ rbenv rehash

②Gemの再インストール

$ rm Gemfile.lock
$ bundle install

ここまで実行した際に、circleciでbuildする際にエラーがでました。

Gemfile.lock is bundled with bundler version 2.3.26
Installing bundler 2.3.26
Fetching bundler-2.3.26.gem
Successfully installed bundler-2.3.26
1 gem installed
Your bundle only supports platforms ["x86_64-darwin-23"] but your local platform
is x86_64-linux. Add the current platform to the lockfile with
`bundle lock --add-platform x86_64-linux` and try again.
Your bundle only supports platforms ["x86_64-darwin-23"] but your local platform
is x86_64-linux. Add the current platform to the lockfile with
`bundle lock --add-platform x86_64-linux` and try again.

Exited with code exit status 

ここに記載されている通り、

$ bundle lock --add-platform x86_64-linux

をターミナルで実行し、もう一度pushしたところこのエラーは消えました。

ですが本題のherokuのlogに出てきているSegmentation faultのエラーは解決できておりません。
Segmentation faultについていろいろ調べましたが、バージョンが理由であったり、メモリが足りなかったりと、理由はさまざまであること、そして自分と同じような環境の例を見つけることができず立ち止まっている状況です。

お力添えいただけますと幸いです。よろしくお願いします。
また足りないコードや情報、詳細がありましたらご教示いただけますと幸いです。

今まで確認した記事:
https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues/449
https://qiita.com/tsutsumin_pro/items/db04a9be8764f3604627


追記です。
https://qiita.com/takapon21/items/6122b6184335c2d5f51e
こちらの記事にいくつか解決法がまとまっていたので実施しました。

①ローカルでPrecompileする

% RAILS_ENV=development bin/rails assets:precompile 

yarn install v1.22.22
warning package-lock.json found.~~~~
[1/4] 🔍  Resolving packages...
success Already up-to-date.
✨  Done in 1.13s.
I, [2024-05-26T21:55:16.053285 #8932]  INFO -- : ~~~~
I, [2024-05-26T21:55:16.053703 #8932]  INFO -- : ~~~~
Everything's up-to-date. Nothing to do

警告は出てますが、一応"Everything's up-to-date. Nothing to do"と出ているのでローカルでは問題なさそうです。

②本番環境でPrecompileする

% RAILS_ENV=production bin/rails assets:precompile 

yarn install v1.22.22
warning package-lock.json found. ~~~~
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning " > @babel/plugin-proposal-private-methods@7.18.6" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/plugin-proposal-private-methods > @babel/helper-create-class-features-plugin@7.24.5" has unmet peer dependency "@babel/core@^7.0.0".
warning "@babel/plugin-proposal-private-methods > @babel/helper-create-class-features-plugin > @babel/helper-replace-supers@7.24.1" has unmet peer dependency "@babel/core@^7.0.0".
warning " > @babel/plugin-proposal-private-property-in-object@7.21.11" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/plugin-proposal-private-property-in-object > @babel/plugin-syntax-private-property-in-object@7.14.5" has unmet peer dependency "@babel/core@^7.0.0-0".
[4/4] 🔨  Building fresh packages...
✨  Done in 6.07s.
I, [2024-05-26T22:03:28.401158 #14600]  INFO -- : Writing ~~~~
I, [2024-05-26T22:03:28.401857 #14600]  INFO -- : Writing ~~~~
Everything's up-to-date. Nothing to do

こちらもEverything's up-to-date. Nothing to doです。
この時点で開発環境でも本番環境でも問題ないと出てしまうのは逆に困ったなと思いました…

③docker上での動作

docker-compose upでコンテナを起動させ、問題なくサイトは見ることができました。

④環境変数の不備

このエラーにたどり着く前に環境変数を登録し忘れてて他のエラーにたくさんぶつかりました。ので、ここはもうクリアしているはずです。念の為もう一度確認しましたが不備はなさそうです。

⑤application.css→application.scssに変更

こちらはbootstrapを導入する時にすでに変更したので不備はなさそうです。

このほかにありました
config.assets.initialize_on_precompile = false
の修正は実施していません。

0

2Answer

Comments

  1. @msdyum

    Questioner

    コメントありがとうございます!
    そのようにしてみます。

@msdyum Heroku に Ruby の segmentation fault をテーマにした記事があります。

ここで説明されている通り、原因はネイティブ拡張 gem のエラーであることが多いです。記事にある、インストール済みのネイティブ拡張 gem を一覧にするコマンドを実行し、対象の gem を bundle update でアップデートしてみてください。

1Like

Comments

  1. @msdyum

    Questioner

    お返事が遅くなってしまいすみません!
    コメントありがとうございます☺️
    現在こちらのエラーは回避のためやむを得ずNode.jsのバージョンを下げて実行したところ、ひとまずデプロイはできるようになりましたがセキュリティ上よくないよなという気持ちは残っています…
    @uasi さんが教えてくださった方法も試してみたいと思います!
    ありがとうございました☺️

Your answer might help someone💌