A világon több tízezer számítógép válik használhatatlanná néhány hét múlva amiatt a meglehetősen homályos dátumhiba miatt, amelyre a fejlesztők rohammunkával készítik a javítást. A hiba bizonyára sokak számára ismerős.
Hirdetés
A tervezők és mérnökök számára termékéletciklus-kezelő alkalmazásokat fejlesztő PTC szoftvergyártó szerint ez a hiba meglehetősen emlékeztet a 2000-es év hibájára (Y2K). Itt olyan hibára keresik a megoldást, amely január 10 után működésképtelenné teszi a legtöbb terméket.
A hibát a múlt héten fedezték fel, és a PTC mérnökei azóta éjt nappallá téve készítik és tesztelik a patcheket, mondta Joe Gavaghan, a PTC szóvivője. A vállalat legelterjedtebb termékeire pénteken kiadtak két javítófoltot, a többi alkalmazásra most készül a javítás.
A hiba egyik oka a programok dátumbejegyzések kezelési módja, mondta Gavaghan. A dátum felismeréséhez a PTC programozóinak végtelen nagyra kellett állítani a dátum értékét, melyet 1970, azaz a Unix operációs rendszer kifejlesztése óta 2 milliárd másodpercre állítanak. 1970 egyébként nagyon sok unixos alkalmazás nulla éve is.
A Unix is nagyon hasonló módon kezeli a dátumot: a fejlesztők végtelen nagy értékként a 4 milliárd másodpercet választották, és ez a legnagyobb szám, melyet 32 bites operációs rendszer le tud kezelni. Ez ugyanakkor azt is jelenti, hogy a legtöbb unixos program 2038-ig lesz működőképes. "A hiba gyökerei a Pro/Engineer termékünk 20-as verziójáig, azaz 1997-ig nyúlnak vissza, és az újabb verziókban, valamint a termékek telepítéséhez használt szoftverekben is bennemaradt" - mondta Gavaghan.
A PTC ügyfeleinek nagy része pozitívumként értékelte, hogy a társaság azonnal és ködösítés nélkül értesítette őket, többen azonban nemtetszésüket fejezték ki a bejelentés időzítése miatt, mert a munkahelyeken tesztelni és telepíteni kell a javításokat, ez pedig tönkreteszi a karácsony utáni pihenést.
Gavaghan elmondása szerint a javítások a végtelen értékét 4 milliárd másodpercre módosítják, és ezáltal néhány évtizeddel meghosszabbítják a PTC termékeinek élettartamát. A későbbi verziók már dátumfüggetlenek lesznek, tette hozzá Gavaghan.
Elég érdekes, hogy erre csak most kaptak a fejükhöz... Már amikor beállították, tudták, mikor áll le. Vagy ennyi időbe telik rájönniük, mi lesz majd a javítófoltban???
1 óra = 3600 másodperc 1 nap = 24 óra 1 év = 365,25 nap
1970 + 2^30/3600/24/265,25 = 2004.02 év
int változó: 1970 + 2^31/3600/24/265,25 = 2038.04 év
unsigned int változó: 1970 + 2^32/3600/24/265,25 = 2106.099 év
long változó (64 bit): 1970 + 2^64/3600/24/265,25 = 5.84 * 10^11 év
Tehát 30 bites változóról van szó, ami _nem_ az int változó. Azért érdemes elgondolkozni, a Tisztelt Cikkíró miért nem számolt utána. Az UNIX rendszereknél int típusú változóban (31 bites pozitív egész tárolás) van tárolva ez a szám (Lásd Linux vagy FreeBSD kernelforrás).
Kicsit figyelmetlenek a programozók :-) Kis töblet munkával ami a teljes SW kifejlesztésének nevetségesen kis töredéke, nem lenne ilyen probléma, de ugye lusták voltak. Illetve az idő tényező, siessünk siessünk, majd megcsináljuk, addig igy működik :-) SZVSZ ezt eltolták, de aszem ki tudják javitani :-) Van ez igy, kell egy kis izgalom :-)
az Y2K problema is nevetseges volt. Csak az USA multicegek hirdettek hogy mindent le kell cserelni azonnal. Nem lattam olyan gepet ahol problemat okozott volna az Y2K.
Erre az Y2K utan persze mindenki rajott miutan ott sem voltak gondok ahol egy fillert sem koltottek az y2k-ra.
azért valahol nevetséges, hogy pár éve minden média tele volt a dátumprobléma miatti gondokkal, és egy ilyen még ma is előfordulhat, ráadásul csak pár héttel a bekövetkezte előtt veszik észre...
Arguing over the Internet is like being in the Special Olympics. Even if you win, you.re retarded.
Koze nincs a unix rendszereknek, hogy mi tortenik jan. 10-en. A 32 bites unixok 2038-ig korrektul mukodnek, es 2038-ra valoszinutlen, hogy barki is 32 bites architekturat hasznal. Kovetkezteteskeppen a problema nem is letezik. A cikk szinvonala == 0. Kit erdekel a PTC nevu ceg benazasa?
a 2004 jan 10 -es datum a 2 milliard felet jelenti vagyis 2^30-on ez a szam valoszinuleg alkalmazas specifikus igy nem ertem mikoze a unix-hoz.
$ date +%s -d '2038-01-19 04:14:07' 2147483647
ez az a 2038-as datum ami 2^31-et jelenti. e folotti datum az ervenytelen. Ha megforditjuk a konverziot akkor a 2^31 folotti szamok mind ezt a 2038-as datumot jelentik. tehat a 4 milliard is 2038-at jelent.
Hogy lehet ilyen félrevezető címet adni egy ilyen egyszerű, bugnak. Bár később a cikkből kiderül, hogy ez nem is a Unixok hibája, de akkor is, sok ilyen cikk és nem olvasok több SG-t. Eddig nem nagyon volt baj a szakmai szinvonallal, de ha így folytatódik eléri a prog.hu-t, bár őket nehéz alulmúlni.
2038-ig jó tehát az amelyben 2 milliárd a határ, a 4 milliárdos pedig 2106-ig. Nem érzem olyan nagy problémának. 2038-ig még 34 év van hátra nagyon extrém eset az, ha 34 évig nem frissitik a szoftvert.