珍しいがありえなくはない

2000年問題に似た不具合、PTC製ソフトに発見(yahoo.co.jp)

この不具合は、プログラムが日付入力を処理する方法に関するものだとガバガン氏は説明する。PTCのプログラマーは製品開発に当たって日付認識のために、無限に近い数値を設定する必要があった。そこで、「1970年から20億秒」という数字を選択。1970年はUNIXが開発された年で、UNIXアプリケーションの多くはこの年が元年に当たる。

20億というのは間違っている(2004-01-11は約10億)。2004-01-11は0x40000000を越える日で、PTCのプログラマは日付/時刻を30ビットunsigned intもしくは31ビットsigned intで表現したようだ。たぶん32ビットの内のトップビットかなんかを別の目的に使っちゃったんだろうな。ちなみに32ビットsigned intにしてしまっていると(printfの%d変換とか)、2038年1月19日、32ビットunsigned intだと…え、わからないや。dateコマンドもPythonもRubyもPerlも頼りにならんのね。Linuxが悪いのかな? たぶん、2100年くらいだろうな。

とりあえず、今のLinuxを使えるのはせいぜい34年後までだ。みじけー。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です