Index Vakbarát Hírportál

Ez lehet az oka az Iphone-ok bugjának

2016. február 15., hétfő 10:27

Súlyos hiba van az Apple 64 bites iOS operációs rendszerében: elég a dátumot 1970. január elsejére állítani, aztán újraindítani a telefont. Egyelőre pontosan nem tudni, mi lehet a hiba oka, a fenti dátumról viszont tudjuk, hogy speciális: ez az úgynevezett Unix-idő nulladik pontja.

A Unix operációs rendszer fejlesztésekor (ezen alapulnak a Linuxok, de az iOS is) a programozóknak szüksége volt valamilyen egyszerű megoldásra az idő mérésére, ami nem foglalkozik olyan bonyolult mesterséges alkotásokkal, mint napok, időzónák, időszámítások. 

A legkézenfekvőbb megoldás erre egy egyszerű előre számláló volt, ami másodpercenként lép előre egyet, és kész. Nullának 1970. január elsejét, azon belül is éjfélt választották, onnantól számolunk előre, a mondat leírásának pillanatában például 1455525948-at írunk Unix idő szerint.

A megoldásnak azonban lehet egy hátránya (ami ma már megoldható, ha úgy készítik el a kódot): nem tud mit kezdeni a negatív idővel, azaz 1970-es kezdőidőpont előtti dátumokkal. Sőt, úgy tűnik a 64 bites Iphone már a nulladik másodperccel sem: a dátumokat, a Unix időt is adott biten, esetünkben 64 biten tárolják el, ami negatív számokat (úgy tűnik, az Iphone implementációja) nem kezel le, se semmit 1970. január elsején. Az egyik probléma lehet, ha ilyet adunk meg neki, például -1-et, akkor átfordul a dolog és megpróbálja megjeleníteni/felhasználni a legmagasabb dátumot, amit még 64 biten le tud kezelni – ez ugyanolyan, ahogy a régi, analóg kilométerórák átfordultak a kocsiban mondjuk 9999 után egy kilométerrel újra nullákon álltak. Ettől az Iphone meghal – azaz a programozók valahol elrontottak valamit, és nem kezelik le rendesen ezeket az eseteket.

A fenti egyelőre csak egy elmélet, az Apple nem erősítette meg hivatalosan, a bugnak viszont mindenképpen köze van a Unix-időhöz. Ha az ön telefonja is meghal, szerencsére van megoldás: hagyni kell teljesen lemerülni a telefont; esetleg kivenni az aksit, bár ez nem könnyű, és nem is ajánlott; illetve nyomni kell rá Device Firmware Update nevű teljes frissítést. Vagy be kell vinni egy Apple Store-ba.

Akit érdekel részletesebb, angol nyelvű magyarázat, itt nézheti meg:

Rovatok