Linuxカーネルのスレッドライフサイクルの落とし穴:ランダムに終了するChromiumプロセスのケース
2025-04-10
Recall.aiのOutput Mediaの起動レイテンシを最適化していたエンジニアが、不可解なバグに遭遇しました。Chromiumプロセスが起動後にランダムに終了するというものです。根本原因は、Bubblewrapの`--die-with-parent`フラグと、LinuxカーネルによるPR_SET_PDEATHSIGの処理方法にありました。このフラグは、親プロセスではなく親スレッドが終了したときに、子プロセスにSIGKILLシグナルを送信します。Tokioのスレッド管理メカニズムがこの動作と相互作用し、親スレッドが回収されたときにChromiumが予期せず終了するという結果になりました。フラグの削除によって問題は解決しましたが、Linuxカーネルのあまり知られていない特性が明らかになり、スレッドライフサイクルとプロセス分離の相互作用を扱う際の注意の必要性を強調しています。
続きを読む
開発