32/64 Bit Bug gefixt

 Interessanter Fehler, der bereits die ganze Zeit in der GUI angezeigt wurde: Unter zufälligen Umständen wurden "zufällige" Laserlinien in der GUI angezeigt (im Simulationsmodus. Zusätzlich wurde auch nur jede zweite Laserlinie dargestellt. So stellte sich dieses dar:

Nach längerem Debuggen stellte sich heraus, dass alle Laserlinienelemente in allen Schleifen vollständig vorhanden waren. Einzig in der Darstellung wurden sie nicht angezeigt… Ursache schien hier ein 32/64 Bit-Problem zu sein, denn beim Auslösen des Events des LaserThreads, dass alle Daten für die GUI zur Verfügung stehen, wurde ein Zeiger auf das erste Element einer QList übergeben. Da nur jeder zweite Wert angezeigt wurde macht deutlich, dass die Ablage der Werte im Speicher offensichtlich jeden zweiten "übersprungen" hat. Denn das jetzige System (ein Apple iMac) ist ein 64 Bit-System!

Da die QList ohnehin bereits 360 Elemente enthielt – unabhängig davon, wie viel Grad der Laserscanner abdeckt, wurde hier kurzerhand (Und um mehr Zeit für Wichtigeres im Projekt zu verwenden) einfach auf ein normales good-old float-Array umgestellt. Nun werden alle Werte korrekt an die GUI emmited und damit auch wieder dargestellt.

[0 Aufrufe]

Speicherleck entfernt

 Ein massives Speicherleck, welches interessanterweise erst (nur?) auf dem Mac auftrat wurde erst einmal entfernt. Die 3D OpenGL Textur des Roboters links oben in der GUI wurde entfernt und übergangsweise durch die vorige 3D-Pfeil-Darstellung ersetzt. Gefunden wurde die Lücke recht schnell mit dem super Apple Tool Instruments. Und so sah das ganze in der GUI des Tools aus:

 

Sehr leicht zu erkennen ist auf der rechten Seite der bräunliche Eintrag, der auf den direcs Sourcecode verweist. Damit war zumindest das Symptom vorerst entdeckt. Warum diese Stelle im Code auf einmal Probleme verursacht (seit Linux unverändert) bleibt noch zu klären.

[409 Aufrufe]