一般
技術・事業・セキュリティ等
- Microsoft Exchange Server、日付チェック問題でメール配信停止(対処中) – ITmedia NEWS
Microsoftが署名付きのint32を使った日付の値の最大値を2,147,483,647にしていることが原因という。2022年の日付の最小値は2,201,010,001以上で最大値を超えるため
32bit(4byte)だと2^32(2の32乗)で4,294,967,296、負の値も用いると正の数は4,294,967,296/2=2,147,483,648で、
0を除くと2,147,483,647が最大値、っていう扱いですかね。
いや、いったい何を基点にした日付の扱いだろうと思ったんだけど、単純に日付の書式で、
「年2桁/月2桁/日2桁/時2桁/分2桁」で、例えば2022年01月01日00時01分を表すのに「2,201,010,001」となっていて
(0時ちょうどは除外して2022年の最小値は1分経過した値なのか、1から開始しているのかはわからないが)、
これが定義しているint32の最大値を超えてバグったってことかな。
登場する数値だけ見るとまるで2038年問題のようだなぁとは思うが、中身は異なりますね。
でもまぁ低水準言語に近ければ近いほど、プログラム的なバグとしてはメモリの扱いや型サイズの扱い、処理系の違いなんかでのバグは多くなりがちだからわからなくもないです。
今回の問題は、サイズの考慮もあるけど、もしかすると設計・仕様面でも何か前提があったのかもしれませんね。
古い処理を流用することもままあるだろうから、開発当時ではそんなに長く使われることが想定されていなかった、とか。
さすがにその辺を外野が知るすべはないですけども。 - CNN.co.jp : 詩を書き芸術を生み出す、人型ロボット「エイーダ」 – (1/2)