パスワードを忘れた? アカウント作成
13515149 story
MacOSX

17行のCコードでシステム全体をフリーズさせられる不具合がmacOS High Sierraで確認 44

ストーリー by hylom
実装は不明 部門より

macOS Hight Sierra 10.13.3で、execシステムコールを実行した直後にtask_for_pidシステムコールを実行すると、システムがフリーズするという不具合が確認されているそうだ。C言語でこれを実装した実証コードも公開されている

task_for_pidシステムコールはMach APIの一つで、ほかのプロセスの情報を得たり操作するためのAPIだそうだ(解説記事)。この不具合の影響で、プロセスの情報を取得するhtopコマンドがシステムをフリーズさせることも確認されているという。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 変なタイトル (スコア:4, すばらしい洞察)

    by minet (45149) on 2018年01月30日 17時49分 (#3353482) 日記

    PoCが短い(17行)ことは不具合の本質ではないだろう。
    関心をもうちょっと分離して
    『macOS High Sierraのシステム全体がフリーズする不具合、PoCが17行のCコードで実装される』
    としてはどうか?

    • by Anonymous Coward

      キユーピー3分クッキング全否定

      #普通に作れば、絶対に3分じゃ終わらないことでも有名だけど。

    • by Anonymous Coward

      長いだろ。去年は十文字程度のコードでアップル製OS上のソフトをクラッシュさせられる文字列もあった。オーエスまるごと落ちるこれとは威力が違うが。

    • by Anonymous Coward

      あれ?
      macOSにはフリーズするバグがあり、
      いかに短いコードで実現するのかを競う競技じゃないの?

      #現在の暫定1位がCで17行って事なんじゃ?

      • by Anonymous Coward

        待て待て、PoCでコードゴルフやワンライナーを競ったらそれこそ問題点の本質が見え難くなってしまうぞ。

        #「入力欄で×文字しか受け付けないので、このフォームではインジェクション攻撃はできません!サニタイズ不要です!」とかほざけた牧歌的な時代には、PoCの短さを示すことにも意味があったのだが

      • by Anonymous Coward

        # \rm -fr /

  • ちゃんと読めよ (スコア:2, すばらしい洞察)

    by Anonymous Coward on 2018年01月30日 18時17分 (#3353502)

    If you want to try it out on your Mac, you can run the program yourself! (at your own risk – for me it freezes some things but everything goes back to normal if I press ctrl+c, I don’t know what will happen if you run it :) )

    • by T.Sawamoto (4142) on 2018年01月31日 10時31分 (#3353820)

      試してみましたけど、Ctrl+Cで停止できるとは限らないようです(^^;)
      iTerm2から実行したときは、しばらくはCtrl+Cで停止できたんですけど、あちこち試してみていたらiTerm2自体がハングアップして応答しなくなりました。
      こうなると、もうお手上げ。フリーズプログラムをkillできなくなります。
      iTerm2は強制終了した後に起動しなくなるし、そもそもps使えないですし。
      もちろんmacOS標準のアクティビティモニタも動作しません。
      (プロセス一覧に何も表示されない)

      ターミナル.appから起動したときは、最初からCtrl+Cに反応しませんでした。

      親コメント
      • by Anonymous Coward

        10.11.6 (El Capitan) では大丈夫みたい。
        xterm (XQuartz) と Terminal.app で何度か試したけど、固まらないし、[Ctrl]+[C] で終了できた。

    • by Anonymous Coward on 2018年01月30日 22時25分 (#3353667)

      システムの一部がフリーズするという記事から「システム全体がフリーズ」という見出しになってしまう安心と安定のスラドクオリティ。

      親コメント
      • by Anonymous Coward

        論理反転には定評のあるフェイクニュース拡散サイトです。

        • by Anonymous Coward

          その点についてはGoogle翻訳も人のことは言えないしなあ。

  • by Anonymous Coward on 2018年01月30日 18時15分 (#3353500)

    よし、私は2行でシステムを固めてやるぞ。
    ちょっと違うか。(念のため書いとくけど、試すなら被害少ないところで)

    #include <unistd.h>
    int main(){while(fork()+fork()); return 0;}

  • by Anonymous Coward on 2018年01月30日 18時27分 (#3353507)

    execはファイルロードまで含めたとても時間の掛かる処理だから単発のシステムコールとしてブロックせずに内部でバックグラウンド処理してると思うんだけど
    プロセス管理データーの生成と基本的な初期化くらいはコール終了までに処理しとかないといけないところをバックグラウンド処理部分に入れちゃって
    次のコールで未完成の管理データーにアクセスして落ちるとか?

    • by Anonymous Coward

      時間かかる処理だとしてもバックグラウンドでやる理由にはならないよ、固まって困るなら別スレッドで呼ぶ等の対策をシステムコールする側がとればいいだけ。

    • by Anonymous Coward

      ブロックも何もexecは戻ってこないよ?

      • by Anonymous Coward

        何言ってんだ、ファイルが無かったら戻ってくるだろ(棒

    • by Anonymous Coward

      今は知らんが、Snow Leopard 位の時には固まっているウインドウに(固まっていることを知らずに)キー入力して
      反応がないからおかしいなと思って別のアプリケーションに切り替えると切り替えた咲のウインドウに
      さっき入力した内容が入力されたりした。ほかにも、日本語入力をオンに切り変えてすぐに A I U E O キーを
      叩くと「aiuえお」みたいな入力になるような問題もあった。Apple にはまともな非同期処理を書く能力が無いんじゃないか?

      • by Anonymous Coward

        Apple にはまともな非同期処理を書く能力が無いんじゃないか?

        いつから同期処理ならまともにできると錯覚していた。

        # ソフトの品質問題、ここ1~2年は酷すぎじゃね?

        • by Anonymous Coward

          > ここ1~2年は酷すぎじゃね
          いつからここ1~2年の問題だと錯覚していた?

    • by Anonymous Coward

      プロセス管理構造体アクセスの排他設計が腐ってるだけでしょ。

      例えばAのセマフォとって、Bのセマフォとるお約束のところを、
      あるエントリーからはBとって、Aとってとかやってると死ぬ、とかの
      初心者にはありがちなミスじゃないかと愚行するが。

  • by Anonymous Coward on 2018年01月30日 20時07分 (#3353580)

    Title Only

    • by Anonymous Coward

      相変わらず
      macは

      • by Anonymous Coward

        アイマックソ。縦に読んでもあんまり変わらない。

    • by Anonymous Coward

      ・バッテリー劣化
      ・そのせいでフリーズ
      ・クロック半分にすれば回避加納

  • by Anonymous Coward on 2018年01月30日 22時28分 (#3353670)

    Pentium F00F バグ [wikipedia.org]ってのを思い出したわ。
    アセンブリ言語一行でシステムがフリーズするというエラッタ。
    そんなのに比べたらこんなのは大した事なさそうね。

    • by Anonymous Coward

      もっと例を用意しないと
      うやむやにはできないぞ

  • by Anonymous Coward on 2018年01月31日 8時05分 (#3353757)

    昔のMSのメーラで何かの文字列を書くだけでフリーズさせるってのがあった記憶がありんす

    • by Anonymous Coward

      つい最近も携帯で見たような…?

  • by Anonymous Coward on 2018年01月31日 8時48分 (#3353773)

    htop みたいなメジャーなコマンドで固まることの方が問題だな。
    (ubuntu 使いだけど htop は多用する)

    • by Anonymous Coward

      そうじゃない。センセーショナルにするためにわざとなのか、翻訳者の能力が足りないのか。
      今回のバグは
      「サンプルにあるコード(fork()とtask_for_pid()をループで全力)を回している状態で、
      裏で ps を実行すると ps が固まることがある。ps 以外にも htop も固まる」
      というもの。

      task_for_pid なんてそうそう使う関数ではないし、fork と task_for_pid の間が
      ミリ秒でも開くと起きなくなるらしいので、実環境では起こるとしても極稀な事象と
      思われる。DoS に使うとしても微妙でセキュリティ的なリスクも高くない。
      # ローカルから DoS したいだけなら fork 爆弾とかの方がよっぽど有効

      こんなしょうもないバグがわざわざニュースになるとかアップルも大変だなあ的な話。
      我らが linux なら見つけた人が即パッチ書いて、カーネルにコミットされて、
      git の log に数行残るだけ忘れさられる程度ものではないだろうか。

      • by Anonymous Coward

        htopで監視してると、サーバーが高負荷になるった時に固まるだけだしね

typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...