donderdag 13 maart 2008

Lang verwachte bevalling op kantoor

Ik werk op kantoor al meer dan een half jaar aan Spidi. De klant gebruikte nog steeds de oude versie, terwijl de nieuwe versie al eind 2006 door onze voorgangers opgeleverd was. Daar zat een heleboel goed werk in, maar ook een heleboel niet goed. Die versie was dus niet geaccepteerd door de klant. Het heeft mij meer dan een half jaar gekost om alle bugs, incomplete functionaliteit en andere gekkigheden te corrigeren.

Eindelijk dan, afgelopen dinsdag, hebben we de nieuwe versie live gezet. Ik zat tot negen uur op de ECT Delta Terminal. Het ging bijna in één keer goed. Bijna. De voorgangers van de voorgangers hadden het database-beheer blijkbaar niet zo netjes gedaan. Er waren kennelijk met de hand extra autorisaties op tabellen gezet. Dat leverde wat problemen op. Gelukkig konden we hier uiteindelijk vrij makkelijk iets aan doen.

Maar woensdag uitslapen was er niet bij. De klant klaagde: de vakantieplanning werkte niet meer. Hoe kan dat nou? Dat werkte wel op de test-machine. Het werd uiteindelijk wéér laat, ik ging weer pas na negen uur naar huis.

Wat was er aan de hand? De prutsers hadden een veld in de database groter gemaakt. Maar dat ze hadden niet overal doorgetrokken. Dus nu werden 41 bytes gekopiëerd naar een buffer van 21 bytes. Tja, dan overschrijf je dus 20 bytes zomaar ergens in het geheugen. Of zelfs 100 keer 20 bytes, want er wordt vaak met groepen van 100 elementen gewerkt. Als je zomaar ergens in het geheugen gaat schrijven, dan kan er van alles gebeuren. Het kan het programma laten crashen (dat gebeurde dus op de operationele machine). Het kan geen enkele impact hebben (als dat stukje geheugen toevallig niet gebruikt werd); dat was kennelijk het geval op de testmachine. Maar het kan nog veel erger: er kunnen subtiele en onopgemerkte verminkingen aan de gegevens optreden. Dat merk je pas veeel later, als het te laat is, en zie dan nog maar eens te achterhalen hoe dat kwam.

Donderdag kon ik dus wel uitslapen. Nee hoor, ik kon eindelijk Philip weer eens naar de peuterspeelzaal brengen! En nu heb ik eindelijk weer eens tijd om me te scheren. Uiteraard belde net toen de klant om te melden dat er iets heel erg mis gaat. Maar toen ik dat een kwartier later zag, en terugbelde, bleek het reuze mee te vallen: hij had gewoon zelf een foutje gemaakt.

Philip in de peuterspeelzaal: paasei schilderen

2 opmerkingen:

  1. Je klinkt overwerkt. Minimaal een weekje rocksport zou je goed moeten doen

    BeantwoordenVerwijderen
  2. Klinkt goed. Dat ga ik maar doen, denk ik.

    BeantwoordenVerwijderen