Division By Zero

ゼロで割る

RHEL5の208日問題について考えてみた

Linuxの208日問題というのがある。

Issue
Linux Kernel panics when sched_clock() overflows after an uptime of around 208.5 days.
Red Hat Enterprise Linux 6.1 system reboots with sched_clock() overflow after an uptime of around 208.5 days

https://access.redhat.com/knowledge/solutions/68466

内容はここに詳しいが、要はTSCカウンタの想定外のroll-over問題。

問題のコードは古く、RHEL5の時代のkernelにも含まれているが、panicやreboot等を確実に引き起こすようになったのは、RHEL6の時代に組み込まれたkernelの別の部分で、問題箇所を定期的に呼んでいるから。

RHEL5では、208.5日経過した瞬間に問題箇所が呼び出された場合、何らかの問題が生じる可能性があるが、その程度。jiffiesのようにTSCにも下駄をはかせておけば、問題が早く発現していいのに、と思ったところで今日は終了!

[2013/02/13追記]

2013/01/08のアップデートRHEL5でもようやくこの問題が修正された。