Passenger workers hang / segfault with Ruby 2.5 / concurrent-ruby 1.1.6
まだ誰も着手していません。
評価
調査の方向性
Start with lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb at line 113 and review the finalization path implicated by the backtrace. Compare the 1.1.6 behavior with 1.1.5 using Ruby 2.5.0 and the reported Passenger setup, then establish a reproducible check for the worker hang or segmentation fault. Done means the failure no longer occurs without regressing thread-local behavior.
索引モデルが issue の本文から書いたものです。
説明
Thank you for all your hard work on the latest 1.1.6 release.
I recently upgraded our app gems and started noticing the passenger workers would become unresponsive (request queue = 100) and not shutdown (normal mem/no CPU usage) after ~12-24 hours. Inspecting the error logs, I found some segfaults that appeared related to the finalization code present in 1.1.6 and a possible MRI bug. Rolling back this single gem to 1.1.5 resolved the issue.
Phusion Passenger 5.0.24
Rails 6.0.0
* Operating system: Ubuntu 14.04.6 LTS
* Ruby implementation: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
* `concurrent-ruby` version: 1.1.6
* `concurrent-ruby-ext` installed: no
* `concurrent-ruby-edge` used: no
Initial segfault data (let me know if the rest would be helpful)
App 26150 stderr: /opt/production_engine/shared/bundled_gems/ruby/2.5.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:113:
App 26150 stderr: [BUG]
App 26150 stderr: Segmentation fault at 0x0000000000000050
App 26150 stderr:
App 26150 stderr: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
App 26150 stderr:
App 26150 stderr: -- Control frame information -----------------------------------------------
App 26150 stderr: c:0003
App 26150 stderr: p:----
App 26150 stderr: s:0011
App 26150 stderr: e:000010
App 26150 stderr: CFUNC
App 26150 stderr: :push
App 26150 stderr:
App 26150 stderr: c:0002
App 26150 stderr: p:0017
App 26150 stderr: s:0006
App 26150 stderr: e:000005
App 26150 stderr: BLOCK
App 26150 stderr: /opt/production_engine/shared/bundled_gems/ruby/2.5.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thr
App 26150 stderr: [FINISH]
App 26150 stderr:
App 26150 stderr: c:0001
App 26150 stderr: p:0000
App 26150 stderr: s:0003
App 26150 stderr: E:0022e0
App 26150 stderr: (none)
App 26150 stderr: [FINISH]
App 26150 stderr:
App 26150 stderr:
App 26150 stderr: -- Ruby level backtrace information ----------------------------------------
App 26150 stderr: /opt/production_engine/shared/bundled_gems/ruby/2.5.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:113:in `block in thread_local_finalizer'
App 26150 stderr: /opt/production_engine/shared/bundled_gems/ruby/2.5.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:113:in `push'
App 26150 stderr:
App 26150 stderr: -- Machine register context ------------------------------------------------
App 26150 stderr: RIP: 0x00007f3d1c008d96
App 26150 stderr: RBP: 0x0000000000000000
App 26150 stderr: RSP: 0x00007ffed1b32bb0
App 26150 stderr:
App 26150 stderr: RAX: 0x00007f3d187d61f8
App 26150 stderr: RBX: 0x00007f3d1c0084e4
App 26150 stderr: RCX: 0x00007f3d1e742ba8
App 26150 stderr:
App 26150 stderr: RDX: 0x00007f3d1c0084ec
App 26150 stderr: RDI: 0x0000000000000000
App 26150 stderr: RSI: 0x00007f3d21a0c8e0
App 26150 stderr:
App 26150 stderr: R8: 0x00007f3d1c2bc068
App 26150 stderr: R9: 0x00007f3d1ddd5b20
App 26150 stderr: R10: 0x0000000000000001
App 26150 stderr:
App 26150 stderr: R11: 0x00007f3d14a0e199
App 26150 stderr: R12: 0x00007f3d21a2f7a0
App 26150 stderr: R13: 0x00007f3d232ac4d0
App 26150 stderr:
App 26150 stderr: R14: 0x00007f3d1dd06248
App 26150 stderr: R15: 0x00007f3d21a2f7a0
App 26150 stderr: EFL: 0x0000000000010287
App 26150 stderr:
App 26150 stderr:
- 主要言語
- Ruby
- スター
- 5.8k
- フォーク
- 420
- 平均マージ
- 20時間 45分
- マージ済み PR(30日)
- 4
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
ruby-concurrency/concurrent-ruby のほかの issue
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
ruby-concurrency/concurrent-ruby#1118 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
ruby-concurrency/concurrent-ruby#1099 · コメント 9 件 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
ruby-concurrency/concurrent-ruby#1095 · コメント 8 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
ruby-concurrency/concurrent-ruby#1093 · コメント 3 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
ruby-concurrency/concurrent-ruby#1091 ·
ruby-concurrency/concurrent-ruby の issue をすべて見る
似ている issue
-
バグ
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
voxpupuli/puppet-epel#186 · コメント 1 件 ·
-
external_created_at is no longer used for the message timestamp since the new message UI (v4.4.0) オープンBug Frontend
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
TheOdinProject/curriculum#31402 · コメント 1 件 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100