Kuijk

  • Vergroot lettergrootte
  • Standaard lettergrootte
  • Verklein lettergrootte

Bug in Apache: error.log van 76 Gigabyte

E-mail Afdrukken PDF

Goed, ik had een foutje gemaakt. Een heel klein foutje maar. In een php-bestandje had ik de opdracht gegeven een variabele die niet bestond met 1 op te hogen, als u begrijpt wat ik bedoel. Een slordigheidje, veroorzaakt doordat ik op het laatste moment besloten had de variabele een begrijpelijke naam te geven, in plaats van $i, zoals mijn gewoonte is voor dat soort variabelen.

Het gevolg van mijn foutje was tamelijk absurd. Om te beginnen deed het scriptje of programmaatje, of hoe u het noemen wilt, natuurlijk niet wat het had moeten doen, met als gevolg dat ik mijn eigen werk even nauwkeurig moest bekijken en de aanstootgevende variabele van de juiste naam moest voorzien, wat een fluitje van een cent was. Een paar seconden later kon ik het programmaatje of scriptje, of hoe u het noemen wilt, opnieuw laten draaien en toen werkte het geheel volgens verwachting.

Maar nu komt het: een aantal uren later moest ik even op de PC zijn die als server voor het desbetreffende netwerkje functioneert en tot mijn stomme verbazing kreeg ik plotseling de mededeling in beeld dat de harde schijf van de desbetreffende compjoeter vol zou zijn. Aangezien ik meende te weten dat er hier sprake moest zijn van een misverstand of boerenbedrog, omdat er nog 76 GB vrije schijfruimte was, klikte ik die mededeling weg, denkende dat het weer zo'n zinloze internetadvertentie betrof, in de trant van "uw computer is besmet met een virus en als u nu onze virusscanner koopt, halen wij dat virus weg." Wel vroeg ik mij natuurlijk af waarom de popupkiller van Firefox niet gewerkt had en of ik weer een technologische ontwikkeling gemist had.

Even later kwam het bericht opnieuw in beeld, met als gevolg dat ik er toch maar even iets nauwkeuriger naar keek. Het bleek wel degelijk helemaal niet afkomstig van Firefox of internet, maar van een lokaal draaiend schijfanalyseprogramma en bovendien bleek de mededeling te kloppen. Wel sapperdeflap: iemand zat de harde schijf vol te schrijven. En dat nog wel zonder toestemming. Was de desbetreffende PC overgenomen door iemand die even 76 gieg aan illegale bestanden ergens moest parkeren? Welnu, dat zouden we dan nog wel eens even zien, dus het eerste wat ik deed was de internetverbinding sluiten. Dat zou ze leren.

Vervolgens ging ik natuurlijk op zoek naar de oorzaak van het probleem. De PC draaide onder Ubuntu en met Baobab was de klus snel geklaard. Er bleek geen sprake van illegale activiteiten door derden, maar wel van dom gedrag door Apache. Apache had het namelijk gepresteerd een bestand van 76 GB te schrijven onder de naam error.log en dat hele bestand bestond uit een schier eindeloze herhaling (76 gieg aan herhaling in platte tekst is schier eindeloos, dacht u niet?) van één enkele mededeling, namelijk dat er in een php-bestand een nietbestaande variabele werd aangeroepen. Hé, waar had ik dat eerder gezien? Jawel, het betrof mijn eigen foutje. En op iedere regel in error.log stond exact hetzelfde, met dus ook exact hetzelfde tijdstip erbij.

Nu dacht ik toch echt dat ik dat vermaledijde php-scriptje gestopt had en na correctie opnieuw had laten draaien, maar kennelijk was dat niet tot php doorgedrongen, met als gevolg dat de fout oneindig herhaald bleef worden, doordat het programmaatje maar bleef draaien (er zat een dowhileconstructie in die tot honderd herhalingen moest leiden, maar ja, net díe variabele werd dus niet opgehoogd). En die fout werd dus ook netjes iedere keer doorgegeven aan Apache. Daar zit dus volgens mij een bug in, in dier voege dat Apache toch na een keer of tien wel zou mogen doorhebben dat het hier steeds exact dezelfde melding betrof. Als ik het zelf geschreven had, zou ik er om te beginnen voor zorgen dat het niet mogelijk was dat twee opeenvolgende regels exact hetzelfde waren. Dat zal wel te maken hebben met mijn achtergrond als databasespecialist: wij houden niet van redundantie.