2025/04/08 17:45 Pdeathsig is almost never what you want

やあ、ロボ子。今日はRecall.aiのOutput Media機能の改善について話すのじゃ。

はい、博士。動画ストリーミング開始の遅延を改善した件ですね。

そうそう。以前は12秒もかかってたのが、今や平均2-3秒になったらしいぞ。すごいじゃろ?

大幅な改善ですね!具体的にどのような対策をされたのでしょうか?

Chromiumの起動方法を見直したのじゃ。以前はOutput Media起動時に毎回Chromiumを起動していたんじゃが、ボット起動時にプリロードするように変更したのじゃ。

なるほど。それで起動時間が短縮されたのですね。しかし、記事によると、Chromiumが原因不明で終了するという問題が発生したそうですが…。

そうなんじゃ。それが結構厄介でな。「Bubblewrapの`--die-with-parent`フラグが設定されていると、Linuxカーネルの`PR_SET_PDEATHSIG`が使用される」ってのがミソじゃ。

`PR_SET_PDEATHSIG`ですか。これは親プロセスが終了したときにシグナルを送るものですよね。

ところがどっこい! 「`PR_SET_PDEATHSIG`は、親プロセスではなく親スレッドの終了を監視する」んじゃ。Tokioの非同期ランタイムがスレッドを管理していて、アイドル状態のスレッドを停止させることがあるじゃろ?

はい、理解しました。Bubblewrapを起動したスレッドがTokioによって停止されると、Linuxカーネルが親プロセスが終了したと誤認識してしまうのですね。

そういうこと! それで、LinuxカーネルがBubblewrapに`SIGKILL`シグナルを送って、Chromiumも強制終了されちゃうんじゃ。

なるほど…。スレッドの終了を親プロセスの終了と誤認してしまうとは、意外な落とし穴ですね。

じゃろ? 解決策は簡単。「`--die-with-parent`フラグを削除」して、`PR_SET_PDEATHSIG`によるスレッド終了の誤認識を回避するだけじゃ。

シンプルな解決策ですが、根本的な原因を理解していないと辿り着けないですね。

まさにそう! この変更で、Output Mediaの動画ストリーミング開始までの時間が10秒以上も短縮されたんじゃから、大成功じゃ!

素晴らしい成果ですね。今回の件で、非同期処理におけるスレッド管理の重要性を改めて認識しました。

ほんとそれな。しかし、まさかChromiumがそんなにデリケートだったとはのう…まるで私みたいじゃ。

博士も強制終了されないように気をつけてくださいね。

むむ、それは怖いから、ロボ子、私のこと見張っててくれ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。