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

ほぼすべてのBSDに存在してきたseekdir()のバグが25歳で死す 70

ストーリー by Acanthopanax
四半世紀 部門より

tamoの日記 曰く、

OpenBSD の Marc Balmer による When seekdir() Won't Seek to the Right Positionというブログエントリによると、4.2BSD 以来すべての BSD libc (Mac OS X も含む) には、unlink() のタイミングなど特定の条件下でseekdir() が不正な値を返すバグがあり、Open/Net/Free/Dragonfly BSD で修正されました。(Undeadly の同名記事には各 BSD の修正箇所も載っています。)

発見と修正のきっかけは Samba ユーザからの苦情で、じっさい Samba 開発者たちは以前から BSD の *dir() にバグがあることを知っていたようです。とはいえ、Marc もこれほど単純なバグが約 25 年も生き残っていたことに驚きと遺憾の意を表明しています。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by vn (10720) on 2008年05月09日 20時32分 (#1341636) 日記
    "BSD のディレクトリ読み出しコードはバグってるから Samba には回避コードが入っている" と開発者 Jeremy から聞かされたときの Marc の反応は

    A claim that I could hardly believe at first and of course my first reaction was to blame Samba.
    というものだった。その通り、バグ探しというのは凄まじい感情労働 (感情に負担のかかる仕事) だと思う。
    • 「俺のバグじゃない」と言いたくなるのが人情ですからね。

      「くらえ!」と逆転裁判風にコード突きつけても「お前の方が間違ってる」という人が時々いるのには参ります。
      --
      署名スパムがウザい?アカウント作って非表示に設定すればスッキリさ。
      親コメント
      • by miishika (12648) on 2008年05月10日 10時25分 (#1341817) 日記
        バグを発見して指摘した時の反応をまとめると

        (1)そんな事実はない→テストをした結果なのですが
        (2)私のせいではない→プログラムを作成したのはあなたです
        (3)テストの方法が悪い→指示された通りにテストしています
        (4)分かっているならお前が直せ→役割分担を破ると、プロジェクトが成り立ちません
        (5)今夜は闇夜ですよ→私を殺してもバグはなくなりません

        といったところでしょうか。
        親コメント
        • by oku (4610) on 2008年05月10日 13時16分 (#1341901) 日記

          (2)私のせいではない→プログラムを作成したのはあなたです

          この抗弁は結構正当な主張であることが多いのでは。 考えられるシナリオ:

          • (2)私のせいではない→プログラムを作成した人は先週退職しました
          • (2)私のせいではない→プログラムを作成した会社は先月撤退しました
          • (2)私のせいではない→プログラムを納品したのは数年前です (瑕疵担保責任外)

          # ええ、確かに前任社の遺した負の遺産と付き合っていますとも。

          親コメント
      • by Anonymous Coward on 2008年05月10日 10時02分 (#1341810)
        操作ログを提示しても「絶対やってない、ソフトのバグだ」と言い張るクライアントと似ています。

        実話なのでAC
        親コメント
    • 自分の子供が犯罪を犯したときの親のようなもんでしょうね。
      そういった実体験はないのですが、
      自分のプログラムが各所で活躍しているという報告を受けると
      自分の子供を誇らしく思うような感情が湧くので、
      そこから類推しました。
      親コメント
      • by Anonymous Coward on 2008年05月10日 16時13分 (#1341982)
        蛙の子は蛙ですから、自分が書いたコードなんて信用できません

        #子孫繁栄は任せたぞ弟たちよ
        親コメント
      • by Anonymous Coward
        >子供のようなモノ

        甘く育てるも厳しく育てるもどっちも有り得る(親次第だ)ってことですね。
        わかります。

        #じゃあ子供のようなものであろうが無かろうが同じようなもんじゃないの?とも思う。
  • 図式 (スコア:5, おもしろおかしい)

    by Anonymous Coward on 2008年05月10日 9時26分 (#1341799)
    • 絶えず行われるリファクタリングによるエンバグや新たなバグでバグ山を築きつつあるLinux。
    • 動いてるものには極力触るなという教えの元で太古のバグが潜み続けるBSD。
    • 発展途上の製品だと開き直るしかないバグの海と互換性という名の元で残り続けるバグ仕様でバグ帝国を築くWindows。
    • 詰めが甘く行き当たりばったりの仕様とそれ見たことかと言いたくなる頻繁な仕様変更でもう何が何やらわからないMac OS X。
  • オフトピ (スコア:3, 興味深い)

    by Anonymous Coward on 2008年05月10日 18時57分 (#1342059)
    某OSに含まれるコマンドの表示が急におかしくなったんだけど何で?
    と言われたので調べてみたら、自分が生まれた年に書かれたコードだったなぁ。
    (商用OSですが、幸か不幸かソースを見れる環境にいたので)

    ちなみに問題の原因は、コードが書かれた当時には恐らく想像もされなかったであろう数のリモート接続が
    日常的に行われていて、コマンドが処理できる接続数の上限をギリギリ超えていたというものでした。

    想定が甘いと言ってしまえばそうですが、20数年先を見越したコードってのもなかなか書けるもんじゃないよなぁ、
    と妙に色々と考えてしまいました。
    そもそも、10年単位で使われるコードを書く機会なんて多分そんなにあるもんじゃないでしょうし。
    ましてや今自分が書いてるコードが今生まれた赤ん坊に修正される運命にあるなんて・・

    結果的だけ見れば、20数年経ってようやく修正されたバグの1つかなと思います。
    (バグとして処理する必要が出てきたのは極最近なんでしょうけど)

    私はコードの読み書きが本職ではないですが、本職の皆さんはこんな経験ザラですか?

    • Re:オフトピ (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2008年05月10日 19時23分 (#1342071)
      >想定が甘いと言ってしまえばそうですが、20数年先を見越したコードってのもなかなか書けるもんじゃないよなぁ、
      >と妙に色々と考えてしまいました。

      それが世界的な規模で問題になっちゃったのが西暦2000年問題ってヤツでして。

      当時の事情からすれば、ある意味仕方が無かったりする場合もあるとは思いますよ。
      #その問題を解決しなきゃいけない世代の人は大変なんですけどね
      親コメント
    • Windows 98が出た頃書いたプログラムをまだ愛用しています。

      今年の9月で10年になりますから10年くらいだったら割と使われてるんじゃないでしょうか。

      親コメント
  • by holon (13785) on 2008年05月11日 7時13分 (#1342235) ホームページ 日記
    もしかして少数派なんでしょうか。
    自分が作ったコード(仕事とか趣味とか)で bug reportもらうとかなり喜んでしまうのって。

    なんてーかそんだけ本気で使っていただけてるってのは嬉しいんですよね。
    仕事なんか自分から率先して(できれば公開)BTS鯖を用意するようにリクエストしてしまう & そういうの禁止されると凹むぐらいで。

    別段マゾだとは思わないんだけど、ソフトウェアが仕様どおりに動いて喜ばれることもあまりなく、かといってワザと bugつっこむほどヒネてもいないので、普通にバグ発見してくれて「自分の知らなかった/気付かなかったことを教えてくれること」ってのは結構うれしいのですよ。

    …やっぱマイナーなんかな、こういうのって。

    • by njt (4968) on 2008年05月11日 16時17分 (#1342326) 日記
      もしかして、ソフトウェアのバージョンに3.141... とか2.718... とか付けてます?
      親コメント
    • いかなる段階においても、バグの報告がやってくることは喜ばしいと思います。
      当然、バグが完全にないものを出力できていればいいのですが、
      残念ながらそれを証明するコストは厳しいものがあります。

       また、バグを出さないようにするのは当然です。
      「適当につくった後、誰かに相手してほしくてバグ報告を待つ」という意味での
      報告がうれしいということでもありません。

       バグをどれだけ減らそうとしても 0にはできないとするなら、その発生した
      場合にどう振る舞うかが大切だと考えます。
       そこで、バグが発生した時に報告してもらえることの価値を私は評価したいのです。
      発生/発見したときに、報告したら修正されるだろう、修正しろという意図があると思います。
      その要求が作った側に届くことはとても嬉しいことだと思います。
      結果、自分の想定しなかった知識を得てより品質をあげることができますし、そのバグが
      何故残ったのか&実装されたのかを検証することで他のバグを発見したり予防できたりします。
       結果、信頼性と品質をあげるコストがより低下していきます。(「バグがバレたので
      とりあえず修正だけする」の繰り返しではダメですが)

       例え発表/発売後であっても、短期的にはバグの報告があがることで上司やクライアントの
      不興を被ることもあるかもしれませんが、ユーザー(or関係者)が見つけた問題点を汲みとれる
      システムがあり、それを活用してもらえることはやはり嬉しいことです。

      # 当然、その報告が原因で自分が失職しても、それは自己責任であり
      # 高い授業料を払って良い勉強をしたと考えています(経験あり(笑))

      親コメント
  • by baku3393 (32616) on 2008年05月10日 9時32分 (#1341801) 日記
    生まれたバグだったんですね…。

    バグ(享年25歳)の冥福を皆で祈りましょう。合掌。

    # 自分ときたら1ヶ月放置したコードですら難読なのに…。
    # 25年前に書かれたという事実を追えるのもある意味スゴイけど。
    --
    ---- ばくさん!@一応IT土方
    • by Anonymous Coward on 2008年05月10日 12時23分 (#1341863)
      > # 自分ときたら1ヶ月放置したコードですら難読なのに…。
      > # 25年前に書かれたという事実を追えるのもある意味スゴイけど。

      某ドライブのファームに 6年ぐらい関わってましたが、
      2年越し、3年越しのバグちょぼちょぼありました。

      まあ実際に即不具合になるものではなく、極端な条件下でのみ
      問題になる可能性があるとか、結果的に全く問題がないが
      開発者の頭の中のイメージとぜんぜん違った動きをするコードに
      なってた、などですが。

      変更履歴を追いかけて、誰がどういう状況でエンバグしたかを
      追いかけると、だいたい自分でへこみました。

      ソフト屋さんって、やっぱりみなさんMっけ多いですか?
      そういう自分の恥を記録する意味でもソース管理は重要です。
      親コメント
  • 仕様です (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2008年05月10日 8時55分 (#1341782)
    バグではありません、仕様です。と言い続けて 25年!
    というようなもんですかね。
    • Re:仕様です (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2008年05月10日 9時09分 (#1341791)
      そういう仕様だという前提で作られてきたコードが今回のFIXで動かなくなることはないのだろうか?
      親コメント
  • by Anonymous Coward on 2008年05月10日 9時02分 (#1341786)
    もっと長命なバグは
    まだ発見されたことが無いのでしょうか?

    25年という数字が大きいのか小さいのかよく判らなかったもんで。

    #すべてのバグを数年塩漬けに"されてしまった"プロジェクトに居たことがあるのでAC
    #あとで修正しにくいったらありゃしない。当時の詳細なコンテキストなんてみんな覚えてないからね。
    • Re:もっと長命な (スコア:2, おもしろおかしい)

      by Anonymous Coward on 2008年05月10日 9時58分 (#1341806)
      人間という存在を作ってしまったこと
      親コメント
      • Re:もっと長命な (スコア:4, おもしろおかしい)

        by christina (34495) on 2008年05月10日 11時31分 (#1341837)
        人間は高度な暗号鍵を安全にしておくことはできないし、人間が暗号操作を遂行する速度と正確さは低すぎて受け入れがたい。
        しかも人間は図体が大きく、維持費が高くつき、管理しにくく、おまけに環境を汚染する。
        このような装置が製造され配備され続けているのは驚くべきことだ。
        しかし、人間はいたるところで幅をきかせているので、われわれがプロトコルを設計して彼らの限界を克服しなければならない。

        --Kaufman

        なかなか面白いと思った罵倒。
        親コメント
      • Re:もっと長命な (スコア:1, 参考になる)

        by Anonymous Coward on 2008年05月10日 10時23分 (#1341816)
        そういえば、「おまえは人間のクズ以下だ」と言われたことがある。。
        親コメント
        • Re:もっと長命な (スコア:4, おもしろおかしい)

          by Anonymous Coward on 2008年05月10日 15時08分 (#1341955)
          「この皿一枚ほどの価値のないおまえが!死ね!死んで償え!」
          そういわれた人もいるらしいですよ。酷いですね。
          親コメント
        • by Anonymous Coward
          「あなたって、本当に最低の屑だわ!」
          と言われたかったのですね。
          ええ、わかります。
    • Re:もっと長命な (スコア:2, おもしろおかしい)

      by messier42 (36151) on 2008年05月10日 11時50分 (#1341849) ホームページ 日記
      もっと長命なバグはありますよ。2038年に殆どのUNIXシステムは…
      親コメント
  • by Anonymous Coward on 2008年05月10日 7時27分 (#1341768)
    BSDセクションなくなっても残ってるんですね
    • by Anonymous Coward
      セクションは無くてもトピック [srad.jp]には存在していますから,アイコンがあるのは当然では?
  • by Anonymous Coward on 2008年05月10日 11時43分 (#1341844)
    なんだか「25歳で死す」って言葉は違和感を感じませんか?
    「25年で駆除される」等の方がよろしくありませんでしょうか

    本題に戻ると大きなシステムでは意外と単純なバグの方が
    長期間放置される傾向にあるような気がするのですがどうでしょう

    • by Anonymous Coward on 2008年05月10日 13時25分 (#1341905)
      日記からのトピック化なので、見出しなどによくある比喩としてそう気にするほどのものでもないかと。
      引用部分を改変せずにどう補足するかが編集者の腕の見せ所なのかな。

      それより、"sorry"を「遺憾 [nhk.or.jp]」と訳してあるのに違和感が…
      親コメント
    • Re:なんだよ死すって (スコア:1, おもしろおかしい)

      by Anonymous Coward on 2008年05月10日 14時58分 (#1341946)
      虫だから
      親コメント
      • by Anonymous Coward
        だから駆除なんじゃね?
        • by Anonymous Coward
          なぜ誰もこのサブジェクトに突っ込まない…?

          元コメも本文は丁寧なのに、このサブジェクトだけ見るとけんか腰にも見て取れる。
          書く時にサブジェクトを気にするのには高等な技術かある種の力が必要なのだろうね。
          • たとえば、霊が見えるとかいうのも特殊な能力と言えなくもない。
            思いたい人は勝手に思っていればいいんだけども…。

            あなたはバグの駆除を死と呼んではいけないと何故思うのかな?
            PCが壊れたりするのも死ぬって言うけど、それはOKなのか。
            普通に強制終了を殺すって言ったりもするよ。

            結局のところ、言い回しが自分の好みに合うかどうかで判断してるでしょ。
            で、気に入らない言い回しを見つけたら、まるで相手が悪いかのように言う。
            でも実際には、「こう言わなきゃいけない」っていうルールがあるような事じゃないね。
            それを自分の好みで自分勝手に非難するのは、あまり褒められた行動ではないな。
            --
            ----- 傷の治療は傷より痛い -----
            親コメント
          • by Anonymous Coward
            > なぜ誰もこのサブジェクトに突っ込まない…?

            なんについて突っ込みが必要なんだい?

            > 元コメも本文は丁寧なのに、このサブジェクトだけ見るとけんか腰にも見て取れる。

            君は、この短い単語からよくけんか腰ってわかるね。
            単に君が悪意を持って読んでいるからじゃないのかい?

            > 書く時にサブジェクトを気にするのには高等な技術かある種の力が必要なのだろうね。

            わけのわからん事をいって、自分を正当化しようとするなよ。

            …とか言われたらやだろ?
            どうでもいいことをあげつらうのはやめようぜ。
    • Re:なんだよ死すって (スコア:1, おもしろおかしい)

      by Anonymous Coward on 2008年05月11日 16時56分 (#1342335)
      私は年齢を表すのに「歳」の文字を使うことにも違和感があります。
      「歳」って漢字はもともと「年」と同じ意味の古い文字なのに、なぜか年齢を表す場合のみに残った。
      さらに省略して「才」を使う場合も多いけど、これも…

      …なんて、言い出したらきりがないし意味もない。
      そういうのをウザいって言うんです。
      親コメント
    • by hashitom (34540) on 2008年05月12日 10時19分 (#1342438)
      『蜂の武蔵は死んだのさ』と昔の歌で唄われたこともあるのでまあ良いのではないかと。
      親コメント
  • by Anonymous Coward on 2008年05月10日 13時04分 (#1341895)
    > A claim that I could hardly believe at first and of course my first reaction was to blame Samba.

    このクラスの人ですらこうなのだから、

     「こっちはこれまで動いてきた(だから正しい)」

    という前に指摘は一度はきちっと考えろってことか。
    • Re:教訓 (スコア:3, 興味深い)

      by SteppingWind (2654) on 2008年05月10日 15時50分 (#1341971)

      という前に指摘は一度はきちっと考えろってことか。

      問題は, スタージョンの法則ではないけど「全ての指摘の9割は的外れ」ってことですね. 少人数でそれなりのレベルの人たちの間では指摘は有益ですけど, 不特定多数が相手となるととたんにレベルが落ちますから. こうなると, いかに話を聞かないかってことが開発効率向上にもつながるってもんで.

      本当はメーリングリストあたりがこうしたクズ指摘のフィルタになればいいんでしょうけど.

      親コメント
      • Re:教訓 (スコア:2, 参考になる)

        by Anonymous Coward on 2008年05月10日 18時08分 (#1342042)
        Sambaのジェレミー・アリソン氏といえば一流として知られてるし、
        一介のアプリ屋風情がOSのバグ指摘などちゃんちゃら可笑しいわ!と
        笑い捨てるわけにもいかず、結果としてバグを葬ることができたと。

        とはいえアプリ屋は

         OSがおかしい→おかしいのはお前のアプリ
         コンパイラがおかしい→おかしいのはお前の期待
         データベースが(略→おかしいのはお前の頭
         ハードウェアが(略→データシートくらい読んでから(略
         設計が(略→お前の能力が(略
         要件が(略→お前の理解が(略

        と自分のコードとか脳内理解とかを疑う前に他所の粗探し
        ばかりするので、まっとうな低レイヤ住民のエンジニアとしては
        嫌気が差すことばかりだろうし無視したくなる気もわかる。
        親コメント
        • Re:教訓 (スコア:5, 興味深い)

          by ich84 (33072) on 2008年05月11日 0時09分 (#1342164)
          私はドライバ屋やってますが、どちらの立場でもある中間管理職的な位置です。

          ユーザやアプリ屋さんから、
          「お前のドライバがおかしい。うちはちゃんとやっているのに!」
          とクレームを受けることもよくあります。
          逆に、ドライバ開発をやっていると
          「OSがおかしい」、「ハードウェアがおかしい」
          としかどうしても思えない場面は意外とよくあります。

          前者の場合、よく調べてみるとやはりアプリ側が悪いことが多いのですが、
          かなり証拠を用意しても(ログとか)なかなか信じてもらえず嫌になることが多いです。
          なので後者のときも、自分が悪い可能性を慎重に調査をして、それでもどうしても
          OSがおかしいということになってから、OSベンダにサポート依頼を行うのですが、
          やはりそれでも結局自分が悪かった、という結果が返ってくることも多いです。
          (名誉のために言っておくと、OSのバグが見つかることも結構あります)

          OSとかドライバとか低層作る仕事やるには、
          「お前が悪い」といわれたときは真摯に対応して、
          結果もし自分が潔白だったとしたら
          「ああ良かった、バグはなかったんだ!」
          と思えるくらいの境地が必要だと思えるようになってきた今日この頃です。

          なかなか境地にたどり着けませんが。
          親コメント
typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...