Linux系OSのディストリビューションであるUbuntuで文書を印刷しようとしたところ、「火曜日だけ印刷が失敗する」という有名なバグがあります。報告されたのは2009年でありバグの修正も完了していますが、ソフトウェア史の興味深いエピソードとしてしばしば話題になっています。
Comment #28 : Bug #255161 : Bugs : cupsys package : Ubuntu
https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/255161/comments/28
Ubuntuなど多くのLinuxシステムでは、CUPSという共通の印刷システムが使われています。CUPSはPDFなどの印刷データをプリンターに送る標準的なソフトウェアスタックで、印刷データをプリンターが理解可能な形式へ変換するフィルタシステムや、そのデータをプリンターへと送るバックエンドシステムなどから成り立っています。
そんなUbuntuでかつて利用されていた「cupsys」というパッケージに関するフォーラム「Bug #255161」では、cupsysで多数報告されていた印刷関連の不具合に関するコメントが投稿されています。

フォーラムで2009年4月に投稿されたのが「妻がOpenOfficeが火曜日に印刷されないって文句を言っていました。試してみたところ、実際に火曜日には印刷されませんでした」という内容です。Ubuntuユーザーのスティーブ氏が報告した内容によると、「火曜日にだけ印刷ができない」というバグは、かつてはUbuntuで標準的なオフィスソフトとして採用されていたこともあるOpenOfficeで作成した文書を印刷しようとした時のみ発生し、他のアプリケーションでは問題なく印刷ができたそうです。
スティーブ氏は、ほとんどの印刷処理で挟まれる「文書をPostScript形式に変換し、ファイルがPostScriptかどうか識別する」というプロセスに問題があると考えました。実際にPostScript形式に変換された中間ファイルを参照してみると、CreationDate(作成日時)のタグに「Tue(火)」という曜日を示す文言が含まれていました。「Tue」を含むファイルを印刷しようとすると失敗しますが、「Tue」を「XTue」に書き換えてファイルを保存したところ、問題なく印刷ができたとのこと。OpenOffice以外のアプリケーションではCreationDateタグを省略していたことで、この不具合は起きなかったとスティーブ氏は指摘しています。
「Tue」が含まれると印刷が行われない理由は、印刷処理の後半の「ファイルがPostScriptかどうか識別する」というプロセスにあります。文書をPostScript形式に変換した後、ファイルが印刷可能なPostScript形式かどうかを確かめるために、file」コマンドを使います。しかし、PostScript形式のCreationDateタグに「Tue」が含まれている場合のみ、内部バイト列のパターンマッチプロセスで「別のファイル形式」と誤認識してしまうというのがバグの正体です。
同様の「火曜日には印刷されない」というバグ報告は「Bug #248619」でも語られており、「ファイルの4番目のバイトに『Tue』が含まれていることで、PostScript形式とは別のErlang JAMファイルであると判断されます」と説明されています。「Bug #248619」は2009年10月公式リリースの「Ubuntu 9.10」で修正されています。
「火曜日にだけ印刷ができない」というバグは2008年~2009年ごろに報告・修正された古いものですが、「バニラのアイスを買ったときだけ車のエンジンがかからなくなる」「部屋で服を着替えるとPCがスリープから復帰する」など、「一見すると謎の現象だけれど技術的に分析したらちゃんと原因が解明する」という例として、しばしば語られています。
この記事のタイトルとURLをコピーする
・関連記事
40%のUbuntuに影響大の深刻な脆弱性「GameOver(lay)」、2020年に修正されたはずなのに改めて発見されてしまう非常事態 – GIGAZINE
Ubuntuの開発環境をコマンド一発で構築できる「Omakub」がRuby on Railsの作者によって公開される、Omakubは「おまかせUbuntu」の略 – GIGAZINE
バニラのアイスを買ったときだけ車のエンジンがかからなくなる不思議な現象、その原因は? – GIGAZINE
ソース元はコチラ
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。


