20 år senere gør Y2K-fejlen comeback

Den 03:14:08 Greenwich Mean Time (GMT, også kaldet Coordinated Universal Time) den 19. januar 2038 (det er en tirsdag), går verden under. Altså, ikke i den bibelske betydning af Johannes’ Åbenbaring. Men det, der vil ske, er, at værdien for tid i 32-bit baserede Unix-baserede styresystemer, som Linux og ældre versioner af macOS, løber tør for tal og begynder at tælle tid med negative tal. Det er ikke godt. Vi kan forvente, at 32-bit computere, der kører disse styresystemer, vil få anfald. Heldigvis havde Linux’ udviklere allerede et fix klar til at gå i gang.

Problemet starter med den måde, hvorpå Unix fortæller tiden. Unix og dets slægtninge – Linux, macOS og andre POSIX-kompatible styresystemer – daterer begyndelsen af tiden fra epok: 00:00:00:00 GMT den 1. januar 1970. Unix-familien måler tiden med antallet af sekunder siden epoken.

Så langt, så godt. Men da Unix og familien startede som 32-bit operativsystemer, holdes tidens værdi som et enkelt signeret 32-bit heltal. Det er mange sekunder, men ligesom sidste århundredes Y2K-fejl er det ikke nok.

Linux-udviklere har set dette komme i årtier. Så Linux-kerneludvikler Arnd Bergmann og andre har arbejdet på en reparation. Disse rettelser findes nu i den kommende Linux 5.6-kernel. Bergmann forklarede: “Linux-5.6, eller min backport af patches til 5.4, skulle være den første udgivelse, der kan tjene som basis for et 32-bit-system, der er designet til at køre efter år 2038.”

Der er nogle forbehold:

  • Alt brugerrum skal kompileres med en 64-bit time_t, hvilket vil blive understøttet i den kommende musl-1.2 og glibc-2.32-udgivelser, sammen med installerede kernel headers fra Linux-5.6 eller højere.
  • Applikationer, der bruger systemopkaldsgrænsefladerne direkte, skal porteres til at bruge time64-syscalls, der blev tilføjet i Linux-5.1 i stedet for de eksisterende systemopkald.
  • Anvendelser, der bruger en privat kopi af kernel uapi headerfiler eller deres indhold, skal muligvis opdateres til Linux-5.6-versionen.
  • Et par resterende grænseflader kan ikke ændres til at videregive en 64-bit time_t på en kompatibel måde, så de skal konfigureres til at bruge CLOCK_MONOTONIC-tider.
  • Alle Epoch-problemer, der findes på 64-bit-maskiner, gælder også for 32-bit-maskiner. Dette påvirker især filsystemer med tidsstempler på disken, der bruger signerede 32-bit sekunder: ext4 med små inodes i ext3-stil, ext2, xfs (rettes snart) og ufs.

Kort sagt, der er en masse oprydningsarbejde, der skal gøres, selv efter at kerneproblemet er blevet rettet.

MacOS har været på vej væk fra 32-bit software i over et årti. Men, tt var først i slutningen af 2019-udgivelsen af macOS Catalina, at Apple gav 32-bit apps sparket ud.

Nu undrer du dig måske – eftersom vi alle kører 64-bit computere i disse dage – hvorfor er dette overhovedet et problem. Tja, det er sådan her. For det første kører mange indlejrede systemer og IoT-enheder (Internet of Things) stadig 32-bit operativsystemer. Faktisk vil der i 2038 sandsynligvis stadig komme nye 32-bit enheder på markedet.

Vi ved også, takket være Y2K-fejlen, der dukker op igen i 2020, at systemer, som du måske antager, vil blive smidt på lossepladsen om 18 år, stadig vil være i live og have det godt – og vil opføre sig dårligt, når epoken kommer.

Men se på det på denne måde: Når vi har rettet dette, behøver vi ikke at bekymre os om, at 64-bit Linux løber tør for sekunder før 15:30:08 GMT søndag den 4. december 29.227.702.659. Personligt vil jeg ikke bekymre mig om det.

Relaterede historier:

  • Y2K-fejlen er tilbage og giver igen hovedpine for udviklere
  • Sydkoreas regering udforsker flytning fra Windows til Linux-skrivebord
  • Værstelig Linux, macOS sudo fejl fundet og rettet

admin

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

lg