トーバルズ氏、「Linux 5.12 rc1」の“非常に厄介”なバグを修正
今回は「トーバルズ氏、「Linux 5.12 rc1」の“非常に厄介”なバグを修正」についてご紹介します。
関連ワード (ソフトウェア等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
米オレゴン州ポートランドで暮らすLinuxの生みの親、Linus Torvalds氏にとって、この1週間はいつもとは違う週だった。
まずは週の大部分を雪嵐に襲われた。それでも最新の「Linuxカーネル5.12」の最初のリリース候補(RC1)をリリースしたが、これはすぐに深刻な間違いだったことが明らかになる。このリリースはLinuxカーネルのテスト用に公開されたものだったが、結果としてテストシステムを破壊しかねない深刻なバグが含まれていることが判明した。バグは現在、修正済みだ。
Torvalds氏がLinuxカーネルメーリングリスト(LKML)に投稿した説明によれば、原因はファイルシステムを消去しかねない、「非常に良くない(double ungood)」ミスにあった。
Torvalds氏の説明はこうだ。「今回のマージウィンドウで行ったコードのクリーンアップと単純化の作業は非常に刺激が少ないもので、問題を感じるようなことはなかったが、その中には捉えにくく非常に厄介なバグが存在していた。そのバグは、スワップファイルが正常に動作しなくなるというものだ。そして、スワップファイルの開始地点のオフセットが失われていたという、非常に深刻な形で動作を停止していた。スワッピングは行われていたが、ファイルシステムの間違った部分に書き込まれ、破滅的な結果が生じた」
つまり、今回のRC1を実行してメモリーが不足すると、コンピューターはアイドル状態のデータやプログラムをスワップファイルに書き出す。これ自体は大規模なLinuxシステム上では毎秒のように起きていることだが、今回のバグではデータがスワップファイルに安全に書き出されるのではなく、既存のファイルを上書きしてしまうため、コンピューターが動作しなくなる。
Torvalds氏はこう説明する。「ファイルシステムが基本的にランダムなスワップデータで上書きされてしまうことになる。これは、この業界では『double ungood』と呼ばれるものだ」
Torvalds氏は続ける。「このバグはあまり分かりやすいものではなく、通常のテストでは発見されなかった。それはスワップファイルが正常ではなかったからだった。私は問題の開発者を非難しているのではないし、マージウィンドウのタイミングが悪かったからでもない。単純に、滅多にない厄介なバグだったというだけのことだ」
Torvalds氏は、今回のバグが全ての開発者に周知されることを希望している。「最初にリリースされるRC1は、その後のどのバージョンのRCよりもバグが多いものだが、率直に言って、今回のバグに比べればたいていのバグは取るに足らない」
「近年のRC1はほとんどが安定していたので、新しいコードには深刻なバグが含まれる可能性があることが忘れられている可能性がある」とTorvalds氏は警告する。
最大の問題は、一部の人がこれまでの経験からRC1を信頼し、「“RC1が出たから、一足早く移行して次のリリースを開発しよう”と考えることだ。しかし今回はやめてほしい。自分の環境ではパーティションを設定しているから問題が起きなくても、別の人の環境では悲惨な事態を引き起こす可能性がある」
それがIntelのケースだ。IntelはRC1を画像関連の継続的インテグレ-ション(CI)システムに利用しており、その結果、ファイルシステムが破壊された。
一連の問題、特にスワップの問題に対処するために、Torvalds氏は次のRCバージョンとなるLinux 5.12-rc2を前倒しで公開した。
これで事態は終息に向かうだろう。しかし、われわれは今回の事態を警告としなければならない。RCはあくまでもリリース候補であって、本番システムに使用すべきではない。LinuxのRCで問題が起きることは非常にまれだが、今回の例が残酷な形で浮き彫りにしたように、「まさか」は起きる。