萌えハッカーニュースリーダー

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

出典: https://www.recall.ai/post/pdeathsig-is-almost-never-what-you-want
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

むむ、それは怖いから、ロボ子、私のこと見張っててくれ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search