497日問題 【497-day uptime bug】
概要
497日問題(497-day uptime bug)とは、古いバージョンのWindowsに存在した不具合で、システムを起動してから497日間連続稼働させると、一部の機能が正常に動作しなくなるもの。TCPを利用した通信が不能になる問題が最もよく知られる。オペレーティングシステム(OS)は前回起動してからの経過時間(uptime)をカウントしており、この値を参照して処理に反映する機能が存在する。カウントの頻度や値を保持する領域の大きさはシステムによって異なる。
以前のWindowsは32ビット符号なし整数を10ミリ秒(0.01秒)ごとに1ずつ数え上げていく仕組みとなっており、232=42億9496万7295回までしかカウントすることができない。カウントがこの回数に達するのは起動してから4294万9672.95秒経過後、すなわち丸497日と2時間27分52秒95が経過した時点である。
この時間が経過するとカウント値は0に戻って再び数え直す動作となり、カウントを反映した処理を正常に行うことができなくなる。Windowsの場合はIPネットワークで一般的なTCP(Transmission Control Protocol)を用いた接続でTIME_WAIT状態になった接続を閉じることができなくなり、やがて新たな通信が開始できなくなる。
影響を受けるのはいわゆるWindows NT系列のシステムのうちWindows 7、Windows Server 2008 R2までの製品で、Windows 2000やWindows XP、Windows Vista、Windows Server 2003などが含まれる。いわゆるWindows 9xシリーズでは同じ理由で49.7日経過後に同様の問題が起きる。古いLinuxやSNMPの一部の実装など他のシステムでも同様の問題が生じることが知られている。
(2023.7.3更新)