Island Life

< ピアノレッスン55回目 | ビート >

2012/07/22

New programming jargon

yomoyomoさんとこ経由で知った Coding Horror: New Programming Jargonが面白かった。かなり「あるある」度が高い。

Right on! だと思ったのをいくつか。

Higgs-Bugson

イベントログやユーザの報告にわずかに散見される手がかりから、存在すると予想されているが、 再現するのが非常に困難なバグ。

Hindenbug

名前から予想されるとおり。データベースの下位層とかいじってるとこれは恐い。

Bloombug

「偶然に金を産み出したバグ」ああこういうバグに当たってみたいものだ。

Hydra code

直しても直しても新たな問題が出てくる。
だが安心して欲しい。 ヘラクレスは必ずヒドラに勝てることが証明されている (どんな手法を取っても、いずれヒドラの頭の数は0に収束する)。 但し、途中のヒドラの頭の数は膨大になるが。

Mad girlfriend bug

「なんでもないわ、平気よ」とテストもログも言うけれど、明らかに様子がおかしい。

Jenga code

これも聞いただけでどんなコードかぱっとわかる。できれば近寄りたくないものだ。

並べてみたらバグとひどいコードに関するものばかりになってしまった。

★ ★ ★

Higgs-Bugsonは最近まさしくこいつに当たったばかりなので個人的にツボ。

  • かなり重い負荷テストの時にごくたまに見られるエラーログAとB (両者は別々のテストで、一見無関係のコンポーネントから出てる)。
  • Aは気になるだけだがBはシステムをハングさせる。だが再現条件がわからない。
  • エラーログから、複数プロセスがかかわる ファイルの作成と削除に関係するものであることが疑われるのだが コードを調べてもハザードは見当たらない。と、ここまでは当初私は知らなかったこと。
  • 私が担当するコンポーネントで、ある負荷テスト時にたくさんエラーログCが出てくるという 報告があがった。こちらも開発環境で再現する小さなテストセットは作れなかったのだが、 理屈の上でハザードが生じる可能性を見つけた (あるプロセスから別プロセスに非同期で メッセージを送ってて、その処理される順序が入れ替わる可能性があった。入れ替わり自体は 仕様の範囲内なのだが、ある使い方と組み合わさると問題が生じる)。
  • その理論を報告したら、上記AとBの事例を示され、「これももしかしてこのバグ?」
  • そのつもりでコードを調べると、確かに理論上同じことが起き得る。
  • 順序の入れ替わりを無くすパッチを作成、問題の負荷テストを流す→エラー見られず。
  • だが「元のコードで確実に再現されるバグが、このパッチで治る」ことは示せてないので、 「バグの存在はほぼ間違いないが確定してはいない」←いまここ

Tag: Programming

Post a comment

Name: