Der Downloadbereich ist zur Zeit gesperrt


Thomas Wölfer
Thomas Wölfer

01. September 2010


Ich habe heute (etwa gegen Mittag) die automatischen Updates für Version 1.65 angehalten und auch den Download-Bereich gesperrt. Der Grund dafür ist ein Fehler, der die Baustatik bei der Anzeige der globalen Faltwerksverformungen abstürzen ließ, wenn man das Programm auf einem Mehrkernsystem verwendete. Der Grund dafür ist bereits gefunden und ein Fix sollte in kürze (spätestens Morgen) in Form eines neuen Updates verfügbar sein.

Stellt sich die Frage: Warum haben unsere Testcases diesen Fehler nicht bemerkt? Zur Zeit laufen jeden Tag etwas über  1000 Dokumente im Rahmen der Testfälle durch, und für jedes Dokument werden alle verfügbaren Ergebnisse berechnet, und dann mit Referenzergebnissen verglichen: Dabei hätte rauskommen müssen, das die Faltwerksverformungen nicht mehr funktionieren.

Ist aber nicht rausgekommen. Das ist nicht schön, und darum habe ich mich auch auf die Suche nach dem Grund gemacht. Und der sieht so aus: Das Problem liegt gar nicht daran, das die Testfälle nicht funktionieren würden, denn die klappen tadellos. Die berücksichtigen allerdings eine Tatsache nicht, und das ist die, das in der neuen Version der Baustatik viele Stellen alle verfügbaren CPUs verwenden. Damit das “elegant” funktioniert, gibt es aber keine zentrale Stelle, an der einmalig alle möglichen Ergebnisse mit möglichst vielen CPUs berechnet werden. Statt dessen werden immer nur die Ergebnisse, die gerade in der Programmoberfläche zur Anzeige ausgewählt wurden berechnet. (Das ist übrigens auch der Grund, warum man zum Beispiel Bemessungsgruppen oder Überlagerungsregeln ändern kann, ohne das die komplette Berechnung verworfen wird.)

Die Parallelisierung findet dabei ebenfalls auf Basis der ausgewählten Ergebnisse statt: Werden zum Beispiel Balkenergebnisse angefordert, dann passiert das beispielsweise auf einer 4-Kern CPU mit 4 Kernen gleichzeitig.

Davon wissen die Testfälle aber nichts: Dort wird einfach über alle Elemente und dann über alle dafür verfügbaren Ergebnisse iteriert. Die Testfälle laufen schließlich automatisiert ab, es gibt also keinen Benutzer der die 1000 Dateien von Hand und durch anklicken eines Zielergebnisses berechnet.

Resultat: Ein Fehler im Multicore-Programmcode wird nicht “einfach so” automatisch erkannt.

Nachdem mir das nun bewusst ist werde ich wohl ein paar Überlegungen anstellen müssen, wie man sowas in Zukunft verhindert: Aber darüber denke ich nach, sobald Version 1.66 mit wieder funktionierenden Faltwerksverformungen fertig ist.