さらに太古のバグが見つかる 65
ストーリー by Acanthopanax
1匹みつけたら 部門より
1匹みつけたら 部門より
seekdir のバグ は 25歳だったらしいが、もっと古い奴が他にも隠れているかもしれない。実際、最近発見された yacc のバグ は 33歳と言われている。
今回の虫発見のきっかけが新実装の malloc のテストで、再現環境は sparc64 のみ、というのが興味深い。発見者の otto 氏は最終的に 6th edition まで遡って調べている。そういう根性はとっても大事だと思う。そうやって調べたから虫の推定年齢がわかったわけだし。
コード検査の手法や技術は充分成熟していると思っていたが、まだ発展の余地があるのだろう。
バグの年齢とは? (スコア:5, 興味深い)
1.良く使われるプログラムだが、全体にたいした影響がない部分だった。
2.あまり多く使われないプログラムだった。
3.そもそもメインテナーがいなかった。
まぁ、他にも理由はあるでしょうが、「1.」はかなり多いのではないかと。
つまり、放置しておいても問題ない、というレベルのものであったとすると、この「バグとり」の作業は、効率が悪い作業、ということにはならないか?
Re:バグの年齢とは? (スコア:5, 興味深い)
今回の件はたいして影響のないものでしたが、
そういう、かつて問題なかった部分が
64 ビットのときとかメモリが大きいときとか
新たに問題になる場面が増えてるわけですよね。
すると心理的にも (「だってずっと大丈夫だったもん」)
技術的にも(「再現しません。そのメモリ安物じゃね?」)
見付けにくいので、部門名のとおり
バグのパターンで叩いたり、デバグ技術の進歩で潰したり
する必要が出てきます。事前に。
今回の大切な点は、OpenBSD "otto" malloc の意地の悪さ
(パフォーマンス重視のシステムでは考えられない実装かも)
によって実際にバグが取れた (しかも 33 年間も
気付かれていなかったものが) という点であり、
それが影響の大きいものかどうかではないと思います。
まさしく proactive security の問題なのです。
Re:バグの年齢とは? (スコア:5, すばらしい洞察)
Re:バグの年齢とは? (スコア:4, 興味深い)
人生は七転び八起き、一日は早寝早起き
Re:バグの年齢とは? (スコア:3, すばらしい洞察)
だって、自分のところでちゃんと動いていればそれで十分って人がほとんどなんだから。
だからこそ「目玉を増やす」ことは重要なんですよ。
Re: (スコア:0)
つまり「テスト担当者が一人だけ」なんてな企業は一番危険だと。
で、テスト担当者を増やせというよりは、
「ドッグフードを食え」のほうが
どう考えても人数を多く確保できるので、お勧めです。
特に小さい企業ではね。
#MSも馬鹿にならんな。
Re:バグの年齢とは? (スコア:3, すばらしい洞察)
あそこは顧客に押し付けてるよ。
Re:バグの年齢とは? (スコア:1)
MSは、「version 3になるまで手を出すな」が、はるか昔から定着していますが、Appleの製品は、未だに、出たと同時に跳び付く奴らばかり
# 自虐的だけどid
僕の頭髪にも太古のバグが発見されそうです (スコア:5, おもしろおかしい)
単なる相性問題ではなく頭部のバグによるものであることがこのたび初めて発覚しました。
前バージョンにも同種のバグがあるにも関わらず、俺一同それを見ないフリをしていた
のが発見が遅れた大きな要因とみられます。
パッチを当てる費用が無いため、当面はバーコードシステムの導入でしのぐ予定です。
なお、腹部にもバグがあるようですが、これは太古のバグと言うより太鼓のバグ
…ってやかましいわ
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:5, おもしろおかしい)
∧_∧
( ;´Д`)
( つ 彡⌒ミ
) 「( ・∀・)
|/~~~~~~ヽ
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:5, すばらしい洞察)
頭部のバグよりも、頭部のバグを過剰に気にする精神部の仕様によって他者との接続に不具合が生じてる人をよく見かけます。
頭部や腹部にバグがあってもそれを気にせずに(時には自分で笑いのネタにして)明るくて社交性豊かな人は、他者との接続時にもハイパフォーマンスを発揮するんですよね…。
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:5, おもしろおかしい)
時には、笑いを取るために踊る勇気も必要だ、と。
なるほど、確かにハイ・パフォーマンスだ。
#え? 製品のことじゃないよ。
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:1)
そういう仕様だったんですよ。
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:1, 参考になる)
頭髪のバグくらいなんとでもなるよ。
他に致命的なバグなんていっぱいある。
プロトコルが不完全でネゴシエーションすら出来ないバグだってあるんだから。
Re: (スコア:0)
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:3, おもしろおかしい)
頭髪は、、、パッチを当ててみては?
Re: (スコア:0)
以前のズボンに入らなくなったら、大きめのズボンに買い換えろということですね?
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:2, おもしろおかしい)
今後のズボン導入時のサイジングにおいて、予測する安全係数及び成長予測の係数の拡大を提言する。
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:2, おもしろおかしい)
Re:僕の頭髪にも太古のバグが発見されそうです (スコア:1)
女性は色々手っ取り早い補正方法があって、うらやましぃ。
やっく☆でかるちゃー (スコア:5, 興味深い)
> The default yacc stack size for C++ is 24 * 200 = 4800 bytes,
> which is larger than a page on most platforms.
> In this case malloc returns a page aligned object,
> no moving of the allocation inside a page occurs.
sparc64の8kページで起こるバグって言ってるけど、ようするに
デフォルトスタックより大きいページだと発生するみたいですね。
現実の環境が、開発時に想定出来た範囲を超えたから表面化したバグってとこですか。
ってことは、今後もソフト屋の想像力を超えたハードの成長で
表面化するバグが現そうですね。
# 「最古のバグ」はまだ更新の余地がありそうですね。
もっとも、yaccみたいに古くから良く使われるツールでないと表面化しなさそうですが。
動物のヤクの綴りはgyakらしい (スコア:2, 興味深い)
love && peace && free_software
t-nissie
Re:動物のヤクの綴りはgyakらしい (スコア:1)
バグではあっても, そのバグに依存したプログラムが大量にあって直せないとか.
これってバグと言うのか? (スコア:1)
sparc64でしか起こらないバグ、と言うことは単にyaccがsparc64で動作させることを
想定していなかっただけじゃないのかな?
と言うか、yaccが作られた時にsparc64がありましたっけ?<あまり歴史知らない
作成時に存在しないアーキテクチャに対しても対応しないとバグと言われるなら、
全てのプログラムが将来バグを含むと思うけど。
#元々sparc64上の動作を想定して作成されて、かつ問題が発生したなら
#バグとは思うが。。。
Re:これってバグと言うのか? (スコア:5, 参考になる)
> 想定していなかっただけじゃないのかな?
> と言うか、yaccが作られた時にsparc64がありましたっけ?<あまり歴史知らない
ちゃいます。アロケートしたメモリの外側をアクセスしているので、言語仕様に照らしてもバグと言いきれるでしょう。
たまたま、小さなページサイズのアロケーションでは (そして既存のアロケータの多くでは)
アロケートした領域の後ろに余裕があったので不正なアクセスに誰も気づかなかったというだけです。
なので
> 作成時に存在しないアーキテクチャに対しても対応しないとバグと言われるなら、
> 全てのプログラムが将来バグを含むと思うけど。
そういう話ではないのですよ。
でもvalgrindとかpurifyみたいなメモリチェックツールでは今まで見つからなかったのかなあ?
Re:これってバグと言うのか? (スコア:1)
。。。英語が読めないからと言って、憶測で書くには駄目ですねorz
失礼しました
Re:これってバグと言うのか? (スコア:1, 興味深い)
て、事例もあるから、表面的には問題なく動作する古いソースにチェックツールをかけて、
修正しまくるのも、どうかとは思うけどね。
太古のバグといえば (スコア:3, おもしろおかしい)
すでに四半世紀も昔の話だ。
Re:太古のバグといえば (スコア:1, おもしろおかしい)
コード検査技術の問題ぁ? (スコア:1)
いやいや。そういう問題じゃなくて。近代的なコード検査手法の出現以前に書かれたツールで、チェックを受けないまま昔から使いづけられてきた・・というだけでは?
Re:コード検査技術の問題ぁ? (スコア:1)
久々に名古屋弁を目にして懐かしい気分になりました。
Re: (スコア:0)
Re:コード検査技術の問題ぁ? (スコア:1)
Re:コード検査技術の問題ぁ? (スコア:1)
タレこみ者がどう思ってたのかは知りませんが、コード検査の手法や技術というと、いまどきのツールを使うとか、全体じゃなくてモジュール単位で先に検証しておくとか、テストケースの妥当性も検証する(のにはやはりカバレッジツールを使う)とか言ったあたりでは? mallocデバッガを使ってみるのは近代的(v7や32Vの時点ではなかった手法だから:-) 。
#1382244 で言いたかったのは、これは、「現代のコード検査の手法や技術で調べていたのにもかかわらず、見逃されていたバグがあった」という事例ではないよねってこと。
Re: (スコア:0)
という、つっこみはなしの方向で?
Re:コード検査技術の問題ぁ? (スコア:2)
Re: (スコア:0)
30年前で太古なら (スコア:1)
Re:30年前で太古なら (スコア:5, おもしろおかしい)
中世:上長が体験した範囲
古代:体験者が身近にいない
古代の問題が発生すると退職した考古学の専門家を呼び出します。
Re:30年前で太古なら (スコア:3, おもしろおかしい)
・・・古ぼる?
Re: (スコア:0)
Re:30年前で太古なら (スコア:1, おもしろおかしい)
Falcom全盛期?
古いものは保護しないとね (スコア:1)
残したくなるよね。
古代バグ保護運動に参加しませんか?
Re:古いものは保護しないとね (スコア:1)
仕様になってえんえんと残り続けるなんて普通にあるのでは。
歴史的理由で○○とか言われることも多いけど。
UNIXだって長年使われてきたので、そういったヘンな部分がありますよ。
例えば、バグじゃないけど歴史的理由で妙な名前のAPIが残っていたりする。
どうしてファイルの生成はcreate()じゃなくてcreat()なんだ?、とかね。
creatのスペル (スコア:2, 興味深い)
なんて話も出てますね。
Re:古いものは保護しないとね (スコア:1, 興味深い)
アッテンボローさんがよく言ってたじゃない (スコア:0)
バグれぽに対しても「だから、それがどうーした?バグではない、仕様だ」
もうこうなれば糞です。
Re:しーっ! (スコア:1, おもしろおかしい)
害虫扱いせず、大事に大事に育てていかなきゃ、33歳を超えるバグが育たないじゃないか!
Re:「さらに太古」 (スコア:1)
僕も「さらに太古」は不自然に感じました。しかし、
「さらに最古」はさらに不自然に感じます。
Re:「さらに太古」 (スコア:1)