えーと、Linuxのsetproctitle()サポートってlibc5時代はあったけど、glibc2になってから消えてたんですよね。
んで、勇気ある若者がUlrichにglibcに追加を要請、自分以外の提案は全部却下するUlrichにより却下されてたんだけど、そのときのUlrichの理由が「カーネルでサポートしたら、な」だったので、カーネルサポートを入れる事にしました。
という、いきさつで、-mm では現在setproctitle()のサポートコードが入っています。具体的にはprctl(PR_SET_PROCTITLE_AREA) を使って任意のポインタをカーネルに教えてあげると、psが
/proc/{pid}/cmdline を読んだ時に、そのポインタから文字列をとってくるというインターフェース。
これでLinuxもあやしげな、SPT_REUSEARGV スタイルのスタックレイプを卒業できます。
裏話としては、最初デベロッパで議論していたときは、この機能のサポートによって性能が落ちるのが嫌だからロックレスにしようぜ、この場合は簡単にできるよーとかいう方向に議論が進んでいたんですが、マージ直前にAndrew Morton が「保守性が悪いから、おれロックレス嫌いなんだよね」とか言い出したので、不詳わたくしが今までのレビューワ全員をあっさり裏切ってロックレスを捨てた普通実装を作って入れてしまった。ははは、みんな、ごめん。
なお、本機能の実装にあたっては、sodaさんには大変お世話になりました。説得のために各種アプリの実装や各OSの実装状況など調査して説得する必要があったのですが、必要な情報はほぼsodaさんから仕入れました。
Suggested-by: Noriyuki Soda
とか、パッチに入れようかと一瞬本気で考えたのですが、本人が喜びそうにないのと、今後マージやらなんやらのパッチの状況報告メールが何回も配信されてしまうので、ご迷惑になると思い諦めました。
ま、カーネルのmainlineに入るのが三ヶ月後で、glibc対応がその半年後、distroまで落ちてくるのは概算で約二年後と考えると先の長い話なんですが・・・
んで、勇気ある若者がUlrichにglibcに追加を要請、自分以外の提案は全部却下するUlrichにより却下されてたんだけど、そのときのUlrichの理由が「カーネルでサポートしたら、な」だったので、カーネルサポートを入れる事にしました。
という、いきさつで、-mm では現在setproctitle()のサポートコードが入っています。具体的にはprctl(PR_SET_PROCTITLE_AREA) を使って任意のポインタをカーネルに教えてあげると、psが
/proc/{pid}/cmdline を読んだ時に、そのポインタから文字列をとってくるというインターフェース。
これでLinuxもあやしげな、SPT_REUSEARGV スタイルのスタックレイプを卒業できます。
裏話としては、最初デベロッパで議論していたときは、この機能のサポートによって性能が落ちるのが嫌だからロックレスにしようぜ、この場合は簡単にできるよーとかいう方向に議論が進んでいたんですが、マージ直前にAndrew Morton が「保守性が悪いから、おれロックレス嫌いなんだよね」とか言い出したので、不詳わたくしが今までのレビューワ全員をあっさり裏切ってロックレスを捨てた普通実装を作って入れてしまった。ははは、みんな、ごめん。
なお、本機能の実装にあたっては、sodaさんには大変お世話になりました。説得のために各種アプリの実装や各OSの実装状況など調査して説得する必要があったのですが、必要な情報はほぼsodaさんから仕入れました。
Suggested-by: Noriyuki Soda
とか、パッチに入れようかと一瞬本気で考えたのですが、本人が喜びそうにないのと、今後マージやらなんやらのパッチの状況報告メールが何回も配信されてしまうので、ご迷惑になると思い諦めました。
ま、カーネルのmainlineに入るのが三ヶ月後で、glibc対応がその半年後、distroまで落ちてくるのは概算で約二年後と考えると先の長い話なんですが・・・
コメント
コメント一覧 (1)