Op mijn werk had ik al maanden last van een heel vervelende bug. Tijdens het debuggen kreeg ik heel vaak een unhandled exception 0xC0000005 na het openen van een file-dialog (save-as, open). Collega’s hadden daar geen last van, maar een collega had al tijden last van een telkens op random momenten crashende Explorer.
Dit is echt een probleem wat vrijwel niet op te sporen is, al is het alleen al omdat het niet op elke computer gelijk gedrag vertoont en je dus eigenlijk niet weet waar je het zoeken moet.
Pak ‘m beet een week geleden kwam ik eindelijk deze blogpost tegen, die wel heel veel leek op mijn probleem en gisteren kwam eindelijk de langverwachte oplossing in de comments voorbij.
Het blijkt een probleem te zijn in Windows 7/Server 2008, waar gelukkig een (experimentele) hotfix voor is. Deze hotfix moet je wel zelf aanvragen en dan krijg je via de mail een download-link. Gezien de experimentele aard, is het aan te raden om voor installatie een restore-point aan te maken.
Het probleem wordt veroorzaakt door een race-condition wanneer een thread een handle probeert te sluiten van een object wat net gedestruct wordt. Tijdens het debuggen geeft dat hele vreemde situaties, omdat je ineens een exceptie krijgt in totaal ongerelateerde code, namelijk precies 60 seconden na het sluiten van het file-dialoogvenster. Dus als je die niet catcht, dan crasht je programma.
Het lijkt erop dat het ook buiten het debuggen invloed heeft op diverse programma’s.
In de Event-viewer van Windows zelf kun je zoeken naar de string “0xC0000005” en dan zie je menig programma, wat in het verleden wel eens gecrasht is.
Het lijkt erop dat die “Exception code: 0xC0000005” een algemene melding is om aan te geven dat geheugen aangesproken wordt wat er niet voor bedoeld is. Dus het kan ook gewoon sloppy programmeerwerk zijn van het betreffende programma. (array gedefinieerd van grootte N en er N+1 elementen in stoppen bijvoorbeeld)
Maar goed, ik kan in elk geval weer gewoon mijn software debuggen en mijn collega heeft geen last meer van crashes van zijn verkenner. Dus de hotfix lijkt zeker wel wat te fixen 🙂