Linus Torvaldsは10月3日(米国時間)、Linuxカーネル開発者向けメーリングリスト「LKML.org」において、10月2日にリリースしたばかりのLinux 4.8に含まれるバグについて謝罪した。Linusの投稿が「I'm really sorry」で始まるケースは非常にめずらしい。
- BUG_ON() in workingset_node_shadows_dec() triggers -Linus Torvalds
Linusが謝罪したLinux 4.8のバグは、カーネルデベロッパとして著名なAndrew Mortonの報告にもとづいてLinusが追加したBUG_ONマクロ(エラー出力)に起因する。MortonはLinux 4.8の最後のリリース候補(RC)版であるLinux 4.8-rc8の公開後にLinusに今回のバグを含む修正パッチを送り、Linusは「あのAndrewがこんな時期に送ってきたのだから大丈夫だろう」と思ってそのバグを適用、結果、「僕がバカだった。こんなクソみたいなバグ(buggy crap)が入り込んだコードを"stable"と呼ぶはめになってしまった」と強い後悔をにじませている。
Mortonの仕事であれば十分にテストが行われているに違いない ―おそらくLinusは、リリース直前という状況も手伝って、あまり考えもせずにMortonの言う通りにいくつかの"BUG_ON()"をメインラインに埋め込んだのだろう。そしてリリース直後に「この修正が直そうとしていたオリジナルのバグよりももっとひどいバグが生まれてしまった。オリジナルのバグは僕のマシンを殺さなかったからね!」という事態を招いてしまったというわけだ。
Linusは今回の"失敗"を受け、「今後、デバッギングメッセージを"BUG_ON"で出そうと考えているなら、(a)プログラミングに対する君のアプローチを考え直せ (b)そのクソみたいな"BUG_ON"を全部取り払ってから僕にパッチを送ってこい、もしくは本物の"デバッギング"メッセージを作り直せ。マシン全体を殺すようなメッセージじゃないヤツをたのむ」と警告、Mortonに対しても「そしてAndrew、たのむからこの手のパッチを送りつけるのはやめてくれ! ココを見とけ」と強い口調でメッセージを送っている。
もっともこのバグは一般的にはそれほど大きなバグではないとされており、まもなくリリースされる予定のフィックス版(Linux 4.8.1)で修正される予定だ。当のMortonは「うーんと、VM_BUG_ONだよね。ほとんどのユーザはCONGIG_DEBUG_VMを指定したりしないんじゃないかと…たしかに"何かが明らかに間違っていて"、そして"おっしゃることはいちいちごもっとも"ではあるけど」とさらりとかわしている。
- Re: BUG_ON() in workingset_node_shadows_dec() triggers -Andrew Morton