Y2018
Het Y2018 probleem is een computerprobleem dat zich manifesteert op 19 januari 2018 om 3:14. en dit voornamelijk op mainframes.
Oorzaak[bewerken]
In C-programma's, evenals in bepaalde Assembler macro's op mainframe, gebruikt men in oudere programmatuur het jaar 1950 als basisjaar om een tijdsregister te vullen. Een register telt 32 bits waarvan 1 bit dient om een teken op te slaan. Zodoende blijven er 31 bits over om een positief getal te bewaren. Het aantal seconden tussen 1 januari 1950 om 00:00 en 19 januari 2018 om 3:14 is precies 2^31. Op 19 januari 2018 om 3:14:08 dreigt er dus een overflowsituatie.
Programma's in andere programmeertalen kunnen ook onderhevig zijn aan deze problematiek; bijvoorbeeld programma's waar een fullword wordt gebruikt om het aantal seconden sinds 1950 op te slaan.
Gevolgen[bewerken]
De reactie van de programmatuur in overflowsituaties valt moeilijk op voorhand te voorspellen. Bepaalde programma's lopen abnormaal af. Andere programma's zullen in een schier oneindige wachtlus komen omdat de timer naar 1881 wordt teruggezet. Nog andere programma's lopen gewoon verder, dan wel met een verkeerde datum.
Systemen die gevoelig zijn aan deze problematiek kunnen mogelijks uitvallen. Testen, waarbij de systeemdatum opzettelijk werd aangepast, hebben dit bewezen.
Soortgelijke bugs[bewerken]
Het Y2000-probleem of het Y2K-probleem. Vanaf 1 januari 2000 voldeden tweecijferige jaartallen, zoals geboortedata, niet meer.
De Y2038 bug is eveneens een overflow probleem, vergelijkbaar met de Y2018 bug. Een 4-byte binair getal (of register) wordt gevuld met het aantal seconden sinds 1970. Dit event gebeurt op 19 januari 2038 om 3:14:08.
Ook de Y2042 bug is een overflow bug met 8-byte binaire getallen (double words) die het aantal microseconden sinds het jaar 1900 bevatten. Dit event gebeurt op 17 september 2042 om 23:53:47.
Bronnen[bewerken]
https://empower.softwareag.com/images/BS2000_TimeOverflow_tcm121-157695.pdf
Dit artikel "Y2018" is uit Wikipedia. De lijst van zijn auteurs is te zien in zijn historische .