iOS が 1970年1月1日にすると起動できなくなる不具合を考察してみた
・通常、iOS はGMT換算で1970/1/1 0:00 以前にすることはできない。
・例えば、日本のタイムゾーンだと 9:00以前には設定できない。
・ところが、Wifi 接続していると、時々Wifi パケットの時間 のタイムゾーンが食い違っていることがある。
この症状が出ている場合、自国の自動調整をONにすると、実際の時刻より 9時間前の時間が表示されるなど、数時間実際の時間とずれた時間になる。
・Wifiが有効になっていると、タイムゾーンの表示がGMT(ロンドン)などに設定されてるので9時以前が適用できるのに、内部的には実際のローケル(日本)が適用されるケースがある。
その結果、内部では 1969年12月31日23:59以前の時間が適用され、負の値になる。
その状態で、再起動すると異常動作を引き起こすんじゃないですかね
つまり、内部的に 西暦 2922億7702万6596年 12-04 15:30:07以前の時刻になってしまうと
時刻の自動調整を外す前に、機内モードにしておけば、この不具合は発生しないんじゃないかなという仮説
iPhoneの日付を1970年1月1日に設定すると文鎮化するバグが発見される | iBitzEdge
Unix timeの場合、1970年1月1日が「0」であり、経過秒数を除算(割り算)して時刻を求めるわけであるが、1970年1月1日の「0」に対して割り算を行ったことが原因だと言われている。 |
って書いてるけど、これはデマ
システム的に考えたらわかるけど、1970/1/1からの日数で割り算する処理なんて入る理由がない
もし、1969年12月31日23:59 から1秒増えて1970年1月1日0:00になるなら復活。そこでカンストする仕様になってるのなら、永久に起動できないってことになりますね。
復活まで最悪1日待ってみてもいいかもしれない・ω・
2922億7702万6596年…!?
これじゃあコンピュータも処理できませんねぇ…
なるほど、タイムゾーンによるアンダーフローですか。
NEGビットへの対処をすれば、改善する可能性がありますね。
近々パッチを配布するそうです。