Skip to content

Der Ab-und-zu-Bug

by Matthias Derer on February 8th, 2007

Seit ich beruflich an einer in Flex programmierten Applikation arbeite, läuft mir unangenehm häufig eine neue Art von Bug über den Weg: der Ab-und-zu-Bug.
Diese Spezies ist so ziemlich das fieseste in Sachen Bug, was einem passieren kann. Der Grund dafür ist, dass der nicht reproduzierbar ist. Er tritt nur ab und zu auf. Mal häufig, mal garnicht. Dann wieder selten. Man kann ihn nicht greifen. Unit-Tests lassen ihn kalt. Da hat er nur ein müdes Lächeln für übrig.

Sein Auftreten ist nicht nur zeitlich variabel. Auch scheint es Plattformabhängig zu sein. Es gibt Ab-und-zu-Bugs, die nur auf einem bestimmten Rechner vorkommen, oder andere, die ihre Häufigkeit per Zufallsprinzip auf mehrere Rechner verteilen. Dabei spielt es natürlich keine Rolle, dass diese Rechner alle die gleichen Komponenten, wie Prozessor, Betriebssystem, Software usw. aufweisen. Der Ab-und-zu-Bug scheint sich sein Auftreten eher nach der aktuellen Hintergrundfarbe auszusuchen, als nach nachvollziebaren Faktoren.

Man kann sich nie hundertprozentig sicher sein, ob man ihn nach endlosen Debugsessions los ist. Manchmal verkriecht er sich auch einfach, um dann einen Tag nach Releasedate fröhlich wieder aus seinem Versteck hervorzukriechen. Es kann auch passieren, dass er sich in dieser Zeit zum ausgewachsenen Immer-da-Bug entwickelt hat.

Die häufigste Ursache für einen Ab-und-zu-Bug sind Racing-Conditions. Und für diese scheint Flex hauptsächlich entwickelt worden sein. Wenn man sich das Klassengefüge einer großen Flexapplikation als eine große Lagerhalle vorstellt, dann würde man darin innerhalb weniger Sekunden in tausend Stücke zerrissen. Zu jeder Sekunde würdem einem hunderte von Events um die Ohren gefeuert werden. Und wehe, es kommt mal ein Event früher an, als erwartet: Ab-und-zu-Bug!
Asynchronität in allen Ehren. Aber Flex übertreibt es maßlos und erschafft dadurch eine neue Art von Spaghetti-Code.

Prost Mahlzeit, danke Flex.

]]>

Seit ich beruflich an einer in Flex programmierten Applikation arbeite, läuft mir unangenehm häufig eine neue Art von Bug über den Weg: der Ab-und-zu-Bug.
Diese Spezies ist so ziemlich das fieseste in Sachen Bug, was einem passieren kann. Der Grund dafür ist, dass der nicht reproduzierbar ist. Er tritt nur ab und zu auf. Mal häufig, mal garnicht. Dann wieder selten. Man kann ihn nicht greifen. Unit-Tests lassen ihn kalt. Da hat er nur ein müdes Lächeln für übrig.

Sein Auftreten ist nicht nur zeitlich variabel. Auch scheint es Plattformabhängig zu sein. Es gibt Ab-und-zu-Bugs, die nur auf einem bestimmten Rechner vorkommen, oder andere, die ihre Häufigkeit per Zufallsprinzip auf mehrere Rechner verteilen. Dabei spielt es natürlich keine Rolle, dass diese Rechner alle die gleichen Komponenten, wie Prozessor, Betriebssystem, Software usw. aufweisen. Der Ab-und-zu-Bug scheint sich sein Auftreten eher nach der aktuellen Hintergrundfarbe auszusuchen, als nach nachvollziebaren Faktoren.

Man kann sich nie hundertprozentig sicher sein, ob man ihn nach endlosen Debugsessions los ist. Manchmal verkriecht er sich auch einfach, um dann einen Tag nach Releasedate fröhlich wieder aus seinem Versteck hervorzukriechen. Es kann auch passieren, dass er sich in dieser Zeit zum ausgewachsenen Immer-da-Bug entwickelt hat.

Die häufigste Ursache für einen Ab-und-zu-Bug sind Racing-Conditions. Und für diese scheint Flex hauptsächlich entwickelt worden sein. Wenn man sich das Klassengefüge einer großen Flexapplikation als eine große Lagerhalle vorstellt, dann würde man darin innerhalb weniger Sekunden in tausend Stücke zerrissen. Zu jeder Sekunde würdem einem hunderte von Events um die Ohren gefeuert werden. Und wehe, es kommt mal ein Event früher an, als erwartet: Ab-und-zu-Bug!
Asynchronität in allen Ehren. Aber Flex übertreibt es maßlos und erschafft dadurch eine neue Art von Spaghetti-Code.

Prost Mahlzeit, danke Flex.

From → Uncategorized

No comments yet

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS