間違いだらけの備忘録

このページの内容は無保証でありこのページの内容によって直接、または間接に損害を受けられたとしても私は責任を取りません。

208日問題

http://kenichiokuyama.blogspot.com/2011/12/schedclock-overflow-after-2085-days-in.html
http://kernel.opensuse.org/cgit/kernel-source/commit/?id=413af9e6f17a1a1519cae0bfd1c1fe4409bb42a3
http://www.novell.com/support/viewContent.do?externalId=7009834&sliceId=1
https://access.redhat.com/kb/docs/DOC-69254

影響範囲
Linux Kernel 2.6.28 で導入されたパッチにバグがあり、3.1.5 で修正された。この間にリリースされた distribution は多分全部影響を受ける。

なお、具体的には
2.6系列: 2.6.32.50でfix
3.0系列: 3.0.13でfix
3.1系列: 3.1.5でfix
らしい。

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

Red Hat Enterprise Linux 6

    Kernel version earlier than kernel-2.6.32-220.4.2.el6
(中略)

Red Hat Enterprise Linux 5

    Red Hat Enterprise Linux 5 for x86

    Kernel version as follows
    -- Red Hat Enterprise Linux 5.7
    Earlier than kernel-2.6.18-274.7.1.el5

    -- Red Hat Enterprise Linux 5.6
    Earlier than kernel-2.6.18-238.28.1.el5

    -- Red Hat Enterprise Linux 5.3
    Earlier than kernel-2.6.18-128.36.1.el5

そうだ! Scale Factor を分数で表そう!!
SC/1024 で表現して、
SCを整数にしておけば、
SCを掛け算した後、
右に10bit シフトすれば済むよっ!!!

…この段階で何か嫌な予感がしなかったんだろうか、こいつらは…
(中略)
かくして、cycles_2_ns() は、208.5日経つと、桁あふれを起こして 0 に近い値を出力する。sched_clock() はこの値を利用しているため、ここもぶち飛ぶ。

スケジューラーはここの値に強く依存しているので、突如として 54bit の数字が 0 になると、カーネルのあちこちがぶっ飛んでしまい、reboot に至る。

素敵〜

このページにはhatena以外のサービスからのコンテンツが埋め込まれています。 hatenaによりGoogle AdSense 広告が埋め込まれています。