Segmentation Fault mit loadUI

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Hi, ich habe im Qt4 Designer eine einfache Oberfläche erstellt. Wenn ich diese Oberfläche in einem Programm lade und das Programm dann beende, tritt fast jedes mal ein Segmentation Fault auf. Das Programm selbst tut noch nicht viel. Es verknüpft lediglich die Click Events zweiter Buttons mit Funktionen.

Als Test habe ich ein neues MainWindow erstellt, welches nur die beiden Buttons enthält. Da tritt das Problem nicht auf. Es lässt sich also auf das ui File eingrenzen.

Ist irgendwas bekannt, dass es mit bestimmten Widgets oder mit bestimmten Layouts oder irgendwelchen Kombinationen zu einem solchen Fehler kommen kann? (ich nutze im übrigen Ubuntu 10.04)

EDIT: ich konnte das Problem inzwischen exakt definieren können. Sobald ich in einer ComboBox das "editable" Flag setze tritt das Problem auf
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
lunar

Ohne minimalen Beispielquelltext kann man jetzt wenig dazu sagen.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich hab noch ein bissel experimentiert und hab das Problem mal auf das Minimum runter gebrochen. Deshalb hat es etwas gedauert

Hier ist einmal die mini.ui Datei http://pastebin.org/453224

und die mini.py http://pastebin.org/453234

Es ist bei mir hier verifizierbar. Wenn ich im Designer die Eigenschaft "editable" deaktiviere kann ich das Programm 50x starten und beenden, ohne dass ich einen Segmentation Fault bekomme. Setze ich einen Haken bei "editable" bekomme ich bei 4 von 5 mal Programm starten und beenden einen Segmentation Fault. Immer beim Beenden. Es reicht, dass Programm in der Konsole zu starten und mit Atl+F4 zu beenden. Die Scan Funktion hat nur dekorativen Charakter. Ich kann auch die Imports von serial und glob sowie die Scan Funktion auskommentieren und erhalte das gleiche Ergebnis.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
lunar

Ich kann den Absturz nicht nachvollziehen. Bei mir beendet sich das Programm normal, alles andere hätte mich bei dem Quelltext auch sehr gewundert.

Warum es bei Dir abstürzt, kann ich Dir nicht sagen.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich konnte es auf zwei Rechnern verifizieren. Auf beiden läuft Ubuntu 10.04 mit aktuellen Paketen
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

So, ich kann den Segmentation Fault auf 3 Rechnern mit Ubuntu 10.04 beobachten. Auf einem Rechner mit der Alpha 3 von Ubuntu 10.10 konnte ich den Fehler noch nicht beobachten.

Es muss also etwas mit der Qt4 oder PyQt4 Version in Ubuntu 10.04 zu tun haben.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Ich hab mit PyQt inzwischen folgende Erfahrungen gemacht: Wenn ein Programm nicht tut wie es soll hilft es zumeist PyQt händisch zu installieren. Irgendwie hab ich nämlich das Gefühl, dass das PyQt ausm Repo nicht genau auf die Qt Version passt. Zumindest hatte ich bei älteren Ubuntuversionen ähnliche Probleme.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

hm, müssen die Versionen von Qt4 und PyQt4 nicht übereinstimmen? Ich hab hier nämlich Qt4.6 und PyQt4.7
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nein, nicht unbedingt, PyQt muss allerdings fuer die Qt-Version uebersetzt worden sein.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Wie cofi sagte: nicht unbedingt; aber in Extremfällen kommt es damit zu Problemen (ich hatte damals so eine Situation, wenn ich mich richtig erinnere).
Antworten