iOS が 1970年1月1日にすると起動できなくなる不具合を考察してみた

10

・通常、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日待ってみてもいいかもしれない・ω・

おすすめ

3件のフィードバック

  1. a2ure_ より:

    2922億7702万6596年…!?
    これじゃあコンピュータも処理できませんねぇ…

  2.   より:

    なるほど、タイムゾーンによるアンダーフローですか。
    NEGビットへの対処をすれば、改善する可能性がありますね。

  3. ななし より:

    近々パッチを配布するそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です