Tagesarchiv für den 29. März 2011

Bug report

Dienstag, den 29. März 2011

Softwareentwickler kennen das: die eigene Software hat einen Fehler, und man findet ihn einfach nicht. Dummerweise tritt der Fehler nur in ganz seltenen Fällen und irgendwo zwischen dem eigenen Code und einer externen Bibliothek auf. Nun wäre es natürlich einfach, die Ursache auf die externe Bibliothek zu schieben - wenn die aber zig millionenfach im Internet genutzt wird, dann ist es doch eher wahrscheinlich, dass der Fehler im eigenen Code steckt.

So geschehen in einem aktuellen Fall bei uns: unter ganz besonderen Bedingungen sind Datenbankabfragen an eine SQLite-Datenbank schief gegangen. Nun “spricht” unsere Software aber nicht direkt mit SQLite, sondern nutzt eine zwischengeschaltete Bibliothek (ebenfalls von uns), welche alle Datenbankzugriffe abstrahiert und optimiert.

Gestern habe ich dann Testcode geschrieben, welcher das Fehlverhalten sowohl mit unserer Datenbank-Middleware als auch direkt mit SQLite reproduzieren ließ. Zeilenweise wurde der Test dann gekürzt, bis klar war, wo der Fehler steckte: in SQLite. Das hilft einem in diesem Moment zwar auch nicht viel weiter, ist aber schonmal eine gewisse Genugtuung. :-) Hier ist der Bug Report - zwar “nur” ein Documentation Bug, aber durchaus mit weitreichenden Folgen wenn man sich auf die in der Dokumentation beschriebene Gültigkeit von Pointern verlässt.