パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Systemd、ログアウト時にバックグラウンドプロセスをkillするよう既定値を変更へ」記事へのコメント

  • 変更には理由あり (スコア:2, すばらしい洞察)

    by Anonymous Coward on 2016年05月31日 19時40分 (#3021943)

    リンク先にも書いてありますが、そもそもはGNOMEだとログアウト時にgnome-keyringとかのプロセスが残ってしまい、ログインログアウトを連発するとゾンビ化したプロセスが多発することが理由のようです。
    https://bbs.archlinux.org/viewtopic.php?id=204307 [archlinux.org]
    https://bugs.freedesktop.org/show_bug.cgi?id=94508 [freedesktop.org]
    黙って変更したわけじゃないんだからこっちで対応すりゃいいだけの話じゃん、と気にならないのは少数派なのか。

    • Re:変更には理由あり (スコア:3, すばらしい洞察)

      by mishima (737) on 2016年06月01日 9時35分 (#3022181) ホームページ 日記

      慣例に従って書かれた今までのコードすべてとの互換性を壊してしまうような変更だから問題になるのでしょう。

      http://www.glamenv-septzen.net/view/854#idf2f03a [glamenv-septzen.net]
      setsid、signal まわりで対応していた世界に
      「PAMで新規セッションを作成しろ」というのは筋が悪いと思います。

      X のログインと TTY のログインがかけ離れているのに、同じ枠組みで取り扱ってきたのが問題のような気もします。

      --
      # mishimaは本田透先生を熱烈に応援しています
      親コメント
      • by qwerty (20776) on 2016年06月01日 23時14分 (#3022600) 日記

        同意。
        慣例じゃなくて仕組みかな。

        CUIなら PID, PPID, PGID, SID, TPGID, tty あたりがあれば一通り問題なく動くからねぇ…。
        ただ、これらのIDは擬似端末とプロセスと標準入出力に紐づいた仕組みで、
        GUI(desktop session) を管理するには足りないのは分かるが
        GUI用の仕組みを作るのが筋であって、巻き添えにするのは違う。

        --
        [Q][W][E][R][T][Y]
        親コメント
    • by Anonymous Coward on 2016年05月31日 20時25分 (#3021961)

      セキュリティ、オーディオ、文字入力、クラウドサービス等でユーザー単位のデーモンを作る時って、logout時に正しく終了させるというのは結構難しいんですよね。知らない間にorphanになってて、それを検出する良い方法も無いですし。

      systemdは同じsessionに属するプロセスをorphanでも追いかけれるんでlogout時にclean upできるのはありがたいですが、普通にやっちゃうと互換性が無くて怒る人たちが多いようです。いっそのことorphan processにもSIGHUPを送れば良いんじゃねと思ったりしますが変ですかね?(理想的にはsignalの新設なんかも)

      親コメント
      • by Anonymous Coward

        > セキュリティ、オーディオ、文字入力、クラウドサービス等でユーザー単位のデーモンを作る時って、logout時に正しく終了させるというのは結構難しいんですよね。知らない間にorphanになってて、それを検出する良い方法も無いですし。

        本物のデーモンなら難しいですが、GNOME 関係ならユーザーとの対話を伴うようなプログラムでしょうし、
        単にユーザーセッションに対応するプロセスグループを作ってそれに属させておいて、ログアウト時に、
        SIGHUP をプロセスグループに送ればいいと思うんですが、それでなにか問題があるのでしょうか?

        • by Anonymous Coward

          そのようにしないプログラマが多すぎるからゾンビが残っちゃうんでしょ。

          • by Anonymous Coward

            だからと言ってsystemdがデフォルトでやることなのか?と言うと、……どうなんだろう。
            今やsystemdはレイヤーが広すぎて守備範囲と言えるのかどうかさっぱりわからない。

          • by Anonymous Coward

            > そのようにしないプログラマが多すぎるからゾンビが残っちゃうんでしょ。

            それはおかしいですよ。
            SIGHUP を送るようにするなら、送る担当は GUI toolkit のセッションマネージャーです。
            GUI toolkit のセッションマネージャーを作るプログラマなんて、世界で10人もいませんよ。

            アプリケーションプログラマーは何もしなくても良いはずですが。

            • by Anonymous Coward

              セッションの終了時にプロセスが正しい順序で終了しないとorphanになってシグナルの送り先が見失われるのと、そもそもSIGHUPは端末の終了であってセッションの終了ではないというのが問題なんだと思います。

              ちなみに、この投稿時にsradの下に出てました > "UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア"

              • by Anonymous Coward

                > セッションの終了時にプロセスが正しい順序で終了しないとorphanになってシグナルの送り先が見失われるのと、

                プロセスグループに関して誤解があると思います。
                シグナルの送り先がどういう順序で終了しても(たとえプロセスグループリーダーが先に終了しても)、子孫プロセスが1つでも残っていればプロセスグループは残りますし、シグナルを送ることができます。

                > そもそもSIGHUPは端末の終了であってセッションの終了ではないというのが問題なんだと思います。

                SIGHUP が端末の切断であったのは確かだし、今でもその意味は残っていますが、現在ではセッション終了時には端末とは関係なくとも、orphaned process group には送られるシグナルとなっていますから、端末の終了に限定する必要はありません。

                なお、daemon(3) を呼べば、process group が切り替わりますから、今回のsystemd の件のように巻き添えをくらう心配はありません。

    • by Anonymous Coward on 2016年06月01日 10時52分 (#3022218)

      > リンク先にも書いてありますが、そもそもはGNOMEだとログアウト時にgnome-keyringとかのプロセスが残ってしまい、ログインログアウトを連発するとゾンビ化したプロセスが多発することが理由のようです。

      要はGNOMEのバグがとれないから、GNOMEを直すんじゃなくて、従来から存在する大量のプログラムに対して、非互換な変更を押し付けるってこと?

      > 黙って変更したわけじゃないんだからこっちで対応すりゃいいだけの話じゃん、と気にならないのは少数派なのか。

      基盤ソフトウェアを保守する立場からすると、ありえないですね。
      基盤的なソフトウェアの場合、従来からその基盤に依存しているアプリケーションとの互換性を維持するというのは、普通なら相当に優先度が高い目標です。
      バグを直すんじゃなくて、互換性を壊して誤魔化すとか、ありえない選択かと。
      正常な判断力があれば、バグを直すことで対応するのでは?

      親コメント
      • by Anonymous Coward

        正常な判断力があれば、バグを直すことで対応するのでは?

        正常な判断力があればより簡単な方をとる
        あとまあSystemdは既存のinitのようなソフトウェアの欠点を克服が最優先なので相当に優先度が高い程度の目標であれば無視されるだろうな。どうせオプションいじれば済む問題ですし。
        gnomeはgnomeで互換性の確保なんてどうでもいいことより改善を優先している組織ですし。

    • by Anonymous Coward

      GNOMEをkillしちゃえよもう
      なんでGNOMEの問題に他が巻き込まれにゃんらんのだ

      • by Anonymous Coward

        Systemd使うの諦めれば済むだろ。

日本発のオープンソースソフトウェアは42件 -- ある官僚

処理中...