DOOM crasht na 2,5 jaar onafgebroken draaien vanwege integeroverflow

Een modder zegt DOOM te hebben laten crashen nadat de game 2,5 jaar onafgebroken draaide. Dat komt door een ontwerpkeuze van de ruim dertig jaar oude game, waarbij er continu een beetje extra data geschreven wordt. Dit zorgt er uiteindelijk voor een integer overflow.

WinDOOM crashDe modder schrijft dat hij voor het experiment WinDOOM op een Windows-PDA liet draaien. De kleine computer, vermoedelijk een ASUS MyPal A620, kreeg als mod een 18650-accu en werd gedurende het experiment van 5V-spanning voorzien. De modder startte het experiment op een onbekend moment, grofweg 2,5 jaar geleden, en zag onlangs dat de game uiteindelijk is gecrasht. Hoelang dat precies duurde, is dus niet bekend.

De crash wordt veroorzaakt door een overvloed aan opgeslagen 'gametics', ofwel ticks, updates van de gamestaat. Dat heeft met de engine van DOOM te maken. Die heeft een functie waarbij er vanuit het hoofdmenu een 'demo' gestart wordt wanneer de speler geen nieuw spel start. Het gaat hierbij niet om een opname van het spel, wat een groot bestand zou zijn, maar een klein lumpbestand waarbij de inputs van een denkbeeldige speler als het ware intern ingevoerd worden. Bij iedere loop van een van de drie demo's worden de gametics opgeslagen, maar niet gereset bij het starten van een nieuwe demo. Hierdoor bouwt het aantal opgeslagen informatie continu op.

Volgens berekeningen van Tom's Hardware worden deze ticks opgeslagen als signed 32bit-integer, ofwel een maximum van 2.147.483.647 ticks voordat er een integeroverflow plaatsvindt. Dat gebeurt met een gamesnelheid van 35 ticks per seconde na net geen 1,95 jaar. Het medium speculeert dat de betreffende port van DOOM mogelijk op een lagere ticksnelheid van 30Hz draait, wat meer in de buurt zou komen van de vermelde 2,5 jaar aan draaitijd. De exacte speelduur voordat de specifieke crash plaatsvindt, is niet bekend.

Voor zover bekend is het voor het eerst dat iemand deze programmeertechnische beperking van de originele DOOM heeft getest. Voor een normale gebruiker is deze 'ontwerpfout' van programmeur John Carmack niet relevant. Althans, tenzij de speler om wat voor reden dan ook ruim twee jaar vergeet een nieuw potje te starten.

Door Yannick Spinner

Redacteur

17-09-2025 • 20:52

68

Submitter: soczol

Reacties (68)

68
68
45
2
0
15
Wijzig sortering
Moraal van het verhaal: Alleen John Carmack kan Doom laten crashen, en zelfs dan kost het hem onder normale omstandigheden bijna 2 jaar.
En dat heeft hij ook gedaan want de tick overflow zat ook globaal in de game. Voor release van de shareware versie lieten ze de game een uur draaien zonder input en toen bevroor de hele computer ineens (crashes in de DOS tijd waren niet mals...). Die bug is in de laatste minuut nog even gefixed niet door debugging maar omdat Carmack beredeneerde dat de overflow de enige oorzaak zou kunnen zijn voor het probleem.

Als ik het goed heb is die anekdote in Masters of Doom te lezen.
En toch weet ik zeker dat John Carmack het irritant vind dat deze bug erin zit 😉

Hij is een en al optimalisatie, nette code, perfectie.
Zou toch een grap zijn als hij er door dit nieuws een patch voor maakt.
Je bent me net 4 minuten voor 🤣

Ik zie inderdaad nog wel een patch uitkomen voor iedere versie waar hij enigszins iets mee te maken heeft gehad
.oisyn Moderator Devschuur® 17 september 2025 22:22
Borderlands 4 crasht al na 3 uur. Wat zijn we toch vooruitgegaan in de laatste 30 jaar :Y)
Mijn Battlefield versie wilde niet eens stárten !!
Ik krijg sommige games niet eens geïnstalleerd.
Ik krijg ze niet eens in mijn winkelmand! :+
Ik kom de winkel niet eens in.
Ik heb niet eens een computer. (nu begint het ongeloofwaardig te worden...)
Ik heb na Senet nooit meer een ander spel gespeeld.
Was dat niet de opvolger van Wolfenstein?

Niet dat ik er ooit van gehoord heb uiteraard...
Das ook een premium game, voor premium gamers. Dan maakt het niet uit, want premium gamers zijn na een half uur al uitgekeken op het spel.
Spelletjes zijn ook niet ingewikkelder geworden laatste 30 jaar ofzo...
Ach, de zoete herinneringen aan Windows ME! Daar hoefde je helemaal niets aan te doen; het draaide zichzelf de nek om na een tijdje.
De ASUS MyPal A620 kan normaal zeker geen 18650 accu bevatten; dat past fysiek niet.
Ook dat is (als het klopt) al een mod op zich.
dat moet niks uitmaken toch? als je geen accu meer kan krijgen moet je wat.
Het was dan ook een DIY gefabriceerde UPS met een 18650 die de PDA voedde.
Uit de bron
So I set up DOOM on a small PDA, powered through a DIY 18650 based UPS which itself was connected to the USB port of my router for a constant 5V supply.
En toch.. In een virtuele machine waar je een veelvoud aan cpu kracht hebt, zou je toch met een verhoogde tick veel sneller tegen deze bug aan lopen? Bedoel, neem een tienvoudig snellere cpu, dan ben je met een drie a viertal maanden al zover. Als je dan ook de tick rate omhoog gooit (mits mogelijk) wordt het helemaal feest. Wel eerbiedwaardig dit, dat zeker :)
De tickrate wordt niet aangepast met framerate...
Nee ingesteld middels een variabele, maar daar heb je wel een snellere cpu voor nodig ;)
Is het niet een vereiste omdat die demo real-time is en overal ongeveer even lang duurt? In een VM zou je wel het stukje data dat de afspeelpositie van de demo voorstelt kunnen proberen te manipuleren maar op oorspronkelijke hardware zonder multitasking kun je tijdens het draaien van het spel nergens normaal bij komen.
Ik vind het knap dat deze game wat best wel oud is zolang meegaat voordat er een fout optreed.
30 Hz tickrate is niet veel.

We zijn met 64 bits tijdperk maar "verwend" met tickrates van 10 MHz en die levenslang niet overflowed.
Ik denk niet dat er moderne games zijn met een tickrate van 10 Mhz. Een tickrate is gewoon hoeveel keer per seconde de state van de game wordt bijgewerkt, en die ligt denk ik nog steeds wel gewoon tussen de 30 en 90Hz ofzo, afhankelijk van de game.

En ook tegenwoordig is het gewoon mogelijk dat applicaties en games teveel dingen in het geheugen willen plaatsen waardoor het geheugen volloopt en er dingen crashen; dat is geen opgelost probleem...
Minecraft zelfs maar 20 ticks per seconde!
Tickrates in the MHz?

Dan moet je daar toch wel een voorbeeld van geven, want dat is vrij zelden hoger dan 60, 30 is meer de standaard, let wel dat een tickrate wat anders is dan een framerate. Ik geloof dat CS vrij exceptioneel is met een 128 framerate en overwatch rond 64, meerendeel is stuk lager dan dat. Hogere tickrates is dan ook alleen boeiend voor multiplayer om latency te proberen te compenseren. Single player games doen het prima op minder dan 30, games zoals Minecraft die zelfs maar iets van 20 doen.

[Reactie gewijzigd door Zoop op 18 september 2025 09:42]

Veel games draaien serverside niet meer dan 30hz. MMOs vaak nog veel lager.
Het was zelfs 35hz. Dat lijkt een raar getal maar de refresh rate van een VGA modus in die tijd was doorgaans 70hz en 35 is daar nu net exact de helft van.
Om nog maar niet te spreken van het feit dat een Windows OS (ook al is het in dit geval Mobile of CE) 2,5 jaar onafgebroken draait, dat is ook een prestatie op zich. 8)7

[Reactie gewijzigd door akimosan op 17 september 2025 21:55]

Ik kan me nog een geval herinneren van 10-20 jaar terug, waarin Windows Servers na 48 dagen uit zichzelf gingen booten. Daarbij legden ze allerlei systemen, inclusief de vluchtleiding van een luchthaven, plat.
Was in Windows 95/98 en NT, na 49 dagen door een 32 bit counter die vol liep.
Hardware in fabrieken draait vaak op Windows CE of iets dergelijks.
Daar draaien die dingen soms jaren zonder uit te gaan. Zeker bij 24/7 draaiende fabrieken.

En ik heb ook diverse windows servers gehad die maar 1x per jaar uit gingen ivm verplichte powerdowns en.of updates. Meestal waren dit domain controllers, DNS servers en DHCP servers.
Servers met daarop SQL ,IIS of andere addons/3rd party software hadden vaker reboots nodig.
Ik kwam laatst nog een metaalsnijder tegen die aangedreven werd door een oeroude computer met een DOS variant. Noodstroom erop etc. Dat ding was in jaren niet herstart of uitgeschakeld geweest en niemand mocht eraan komen.
Jup. Komt heel bekend voor. Wij hadden een Windows NT machine die wagentjes op een magneetbaan aanstuude. Stond op een heel stoffige plek en elke duuw tegen dat ding zorgde voor veel onrust bij dit team :P
Was ook niet te vervangen zonder grote investering

Via Ebay reserve onderdelen moeten komen om te voorkomen dat wanneer er hardware kapot ging ,we een kans hadden om het te repareren,
Met Windows Mobile vind ik dat niet zo gek, heb zelf ook genoeg PDA\s gehad in die tijd, en die gingen eigenlijk nooit uit tenzij de batterij leeg raakt, anders stonden ze altijd wel standby (net als menig smartphone tegenwoordig), en ik kan mij niet herinneren dat dat ooit crashte vanwege het OS.
hmm... de tekst heeft het over een gesigneerd getal. Ik denk dat dit niet correct Nederlands is. Je zou kunnen zeggen een getal uit het Z-domein (voor de wiskundigen onder ons), of gehele getallen. Gesigneerd in het Nederlands zou ik zien als ondertekend, en integer als betrouwbaar of eerlijk.

Oprechte discussie/vraag... ben ik de enige die dit een hele rare vertaling vindt? Is dit iets dat een tool zo zou vertalen?

Voor komt dit erg storend over... Ik had liever gezien dat er de Engelse term gebruikt zou worden zoals in openingsparagraaf. En dan dat consistent in het hele artikel (dus niet zoals verder in het artikel integeroverflow (niet italic en aan elkaar geschreven)). Ben ik hier de enige in? Misschien ben ik ook wel een boomer :P.

As a side note... Ik ben ooit eens gevraagd om een toets over netwerken helemaal in het Nederlands te vertalen omdat wij persé Nederlandstalig onderwijs willen. Het cijfer voor de Nederlandse toets was significant lager dan de Nederlandse toets met Engelse termen... Dus ook beginnende studenten kunnen prima uit de voeten met een beetje Engelse vaktermen.
Idd. De vertaling klopt taaltechnisch op zich wel, maar niemand zegt het ooit zo. In het Engels is het signed int. De int bevat een sign (teken) dat aangeeft of het een negatief of positief getal is. In het Nederlands is dat gesigneerd. Niet met een handtekening, wel met een teken.

Tweakers probeert wel vaker IT terminologie te vernederlandsen, maar het klinkt nogal raar als 100% van de IT'ers het nooit zo zal zeggen. Vorige week ook al zoiets met een git pullverzoek of zoiets. Zeg dan gewoon request, dan snapt iedereen het. Zal wel journalistieke taal zijn. Ik vind het ook raar. Engels ftw!

Wat een hel moet dat vertaaltraject geweest zijn zeg. Ik heb ook wel eens een heel softewareproject in het Nederlands moeten doen. Zorgde ook alleen maar voor problemen.
Hi, professionele full stack consultant developer hier. Gesigneerd wordt gewoon geaccepteerd in communicatie. We vernederlandsen naar eigen inzicht IT termen als we daar behoefte aan hebben, zijn namelijk geen regels voor anders dan dat we context succesvol willen overcommuniceren naar een ander
Dat is een geheel Nederlands zin op de titel van je baan na! ;-)
Toch zou ik het raar vinden, we programmeren immers ook niet in het Nederlands.

een integer is volgens mij ook een ‘geheel getal’. En singed is dan waarschijnlijk nog eens getekend. Want het is geen ‘signatured integer’ althans zo zou ik het weer intepreteren. We zetten ook geen booleaanse waarde naar waar en onwaar. En we zetten ook geen tekstwaardes in een ‘draadje of lintje’ toch*

Uiteindelijk is het, mijn inziens, logischer om bij de termen te blijven van de techniek en niet een eigen vertaling aan te nemen die eigenlijk niet vast ligt en dus tijdens het lezen de vraag oproept ‘Wat bedoelen ze’

*als jullie dit wel doen kom ik graag eens langs om wat documentatie te lezen
Taaltechnisch klopt het niet helemaal want je verliest de betekenis, maar het klopt wel weer in de context waarin het gebruikt wordt wanneer Nederlands wordt gebruikt en geen Engels. In Nederland pakken we naadloos de Engelse termen en begrippen op, mijn Vlaamse collega's zijn daar wat terughoudender in. Kan persoonlijk zijn of een landsdingetje, ik weet het niet zo goed.

Hoe dan ook is dit bar lelijk naar mijn mening. Je vertaalt iets naar het Nederlands, maar de betekenis blijft de Engelse betekenis. Gebruik dan 'gewoon' Engels en laat het Nederlands achterwege, tenzij er echt een goede Nederlandse term voor is.
Dit verdient toch een aanmeding bij CVSS, niet?
Alleen als je er een exploit van kunt maken. Gewoon een crash is geen security risk.
De modder laat niks crashen, de titel doet dit vermoeden, maar het is toch echt de game zelf.
Hij laat het gebeuren, dus op zich klopt dat wel.
Eens. Hij heeft het gestart en niet meer naar omgekeken. Hij heeft geen bewuste actie ondernomen om de crash uit te lokken.
Ah, dus we gaan van 'Can it run DOOM?' naar 'Can it crash DOOM?' :+
Nee, dan zouden we naar 'Can Doom crash it' gaan. ;)


Om te kunnen reageren moet je ingelogd zijn