2038-Problem
Exemplarische Darstellung des Jahr-2038-Problems

Das Jahr-2038-Problem könnte zu Softwareausfällen im Jahr 2038 führen. Dieses Problem ist auf EDV-Systeme beschränkt, die den POSIX-Zeitstandard benutzen und time_t als 32-Bit-Binärzahl definieren.

POSIX zählt die seit dem 1. Januar 1970 abgelaufene Zeit in Sekunden. Am 19. Januar 2038 um 03:14:08 Uhr UTC wird die Anzahl der vergangenen Sekunden die Kapazität einer 31-Bit-Zahl (maximal 2147483647) überschreiten. Das signifikanteste Bit wird laut Konvention dazu verwendet, positive und negative Zahlen zu unterscheiden (Vorzeichen im Zweierkomplement), so dass die Zählung bei einer Überschreitung des Wertes 2147483647 (binär 1111111111111111111111111111111) in den negativen Bereich springt (z.B. 2147483648 binär 10000000000000000000000000000000). Dies führt bei einer ungenügendend implementierten Konvertierung von Unixtime zu Datum und Uhrzeit ungewollt zu einem Wert vor Epoche (1. Januar 1970). Dieses Problem wird in der Softwareentwicklung als Zählerüberlauf (Counterwrap) bezeichnet.

Im Vergleich zum Jahr-2000-Problem, welches im Wesentlichen beim Datumsstempel von Dateien auftrat, führt das Jahr-2038-Problem zu Fehlern bei elektronischen Transaktionen, die die Unixzeit als Zeitstempel verwenden. Ohne Gegenmaßnahmen könnten die wirtschaftlichen Auswirkungen verheerend sein, zumal im Banken- und Versicherungsumfeld Unix-Systeme neben Mainframes zur Standardausstattung gehören.

Ein Beispiel für typische Jahr-2038-Fehler sind Transaktionen, deren Gültigkeit vom Zeitstempel des Ergebnisfeldes abgeleitet wird. Ist das Ergebnis nicht jünger als die Ausgangsdaten, so wird weiterhin auf ein gültiges Ergebnis gewartet oder die Transaktion irgendwann automatisch neu angestoßen. Am Stichtag des Jahr-2038-Problems werden allerdings sämtliche Ergebnisse den vermeintlichen Zeitstempel Dezember 1901 tragen, sind also immer älter als die Eingabedaten. Wartende Programme geraten so leicht in Endlosschleifen, was sich für den Endbenutzer in „abgestürzten“ Anwendungen äußert – z. B. ein Geldautomat, der ewig auf die elektronische Bestätigung der Kontenabbuchung wartet, bevor er Geld ausgibt.

Abhilfe

Schon deutlich vor dem Jahr 2038 wird der Unixzeit-Zähler in den Systemen voraussichtlich als 64-Bit-Zähler implementiert. Dies hängt damit zusammen, dass die unixtypische C-Definition auf den Basistyp „long“ verweist. Es hat sich bereits heute im Unixumfeld durchgesetzt, dass beim Übergang von 32-Bit- zu 64-Bit-Architekturen eben dieser Basistyp auf 64-Bit wechselt (technisch: Umstellung von ILP32 auf LP64-Modell), so dass Zeitstempel zumindest systemseitig als 64-Bit time_t geliefert werden.

Dennoch reicht eine Umstellung auf neue 64-Bit-Prozessorarchitekturen (AMD64/EM64T, Itanium/IA-64, IBM Power 5, UltraSPARC, PA-RISC, MIPS) hier alleine nicht aus: Sie vereinfacht zwar die systemseitige Anpassung, macht jedoch die Durchforstung und Neu-Übersetzung aller Programme mit starrer 32-Bit-Formatierung nicht überflüssig. Nicht alle Programme sind bereits 64-Bit-tauglich und es ist leicht möglich, dass vom System gelieferte 64-Bit-Zeitstempel fälschlicherweise als 32-Bit weiterverarbeitet werden und somit nur die unteren 32 Bit abgefragt werden, welche dann losgelöst wiederum am 19. Januar 2038 den Wert −231 = 13. Dezember 1901 annehmen.

Durch die 64-Bit-Umstellung kann der POSIX-Zeitstempel weitere 292 Milliarden Jahre zuverlässig arbeiten, ohne dass es zu einem Überlauf kommt.


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Year 2038 problem — The year 2038 problem (also known as Unix Millennium bug , or Y2K38 by analogy to the Y2K problem) may cause some computer software to fail before or in the year 2038. The problem affects all software and systems that store system time as a… …   Wikipedia

  • Jahr-2038-Problem — Exemplarische Darstellung des Jahr 2038 Problems Das Jahr 2038 Problem von EDV Systemen könnte zu Softwareausfällen im Jahr 2038 führen. Dieses Problem ist auf EDV Systeme beschränkt, die den POSIX Zeitstandard benutzen und time t als… …   Deutsch Wikipedia

  • Jahr-2038-Problem — Jahr 2038 Problem,   Jahr 2000 Problem …   Universal-Lexikon

  • 2038 — Exemplarische Darstellung des Jahr 2038 Problems Das Jahr 2038 Problem könnte zu Softwareausfällen im Jahr 2038 führen. Dieses Problem ist auf EDV Systeme beschränkt, die den POSIX Zeitstandard benutzen und time t als 32 Bit Binärzahl definieren …   Deutsch Wikipedia

  • 2038 — (MMXXXVIII) will be a common year starting on Friday of the Gregorian calendar. Predicted events* January 5 Annular solar eclipse in the Caribbean Sea, Atlantic Ocean, and western Africa. * January 19 A common computing representation of date and …   Wikipedia

  • Year 2000 problem — Y2K redirects here. For other uses, see Y2K (disambiguation). The (French) sign reads 3 January 1900 instead of 3 January 2000 The Year 2000 problem (also known as the Y2K problem, the Millennium bug, the Y2K bug, or simply Y2K) was a problem for …   Wikipedia

  • Проблема 2038 года — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете …   Википедия

  • Jahr-2000-Problem —   (Y2k Problem, Millenium Bug), das vor dem Jahreswechsel von 1999 auf 2000 befürchtete Problem, dass die zahlreichen Programme, die Jahreszahlen nur zweistellig darstellen, fehlerhaft arbeiten und weiträumige Systemausfälle und damit erhebliche… …   Universal-Lexikon

  • Year 10,000 problem — The Year 10,000 problem, or Y10K, is the class of all potential software bugs that may emerge should the need to express years with five digits arise. The problem can have discernible effects today, but is also sometimes mentioned because of its… …   Wikipedia

  • Year 2007 problem — The Year 2007 problem also known as Y2K7 (or DST07) is an issue caused by a US mandated change to daylight saving time, which has repercussions in the computer industry.cite web | date = 2007 01 29 | accessdate = 2007 03 01 | title = Daylight… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”