wxPython verursacht segfaults

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Donnerstag 21. Juni 2007, 22:58

Ich versuche gerade mit wxpython ein GUI für meine Lan Filesharing Applikation zu schreiben. Wenn ich jedoch etwas "falsch" mache bekomme ich keine Exception sondern einen freundlichen Segfault. Mit etwas glück bekomme ich dann aus dem Backtrace von GDB raus was das Problem ist.

Meine Frage:
Ist wxpython immer so Buggy oder mach ich einfach etwas falsch?

Ich wollte eigentlich mal wxpython verwenden weil ich weis das pygtk unter Windows nicht ganz so gut funktioniert. Langsam aber sicher verliere ich jedoch die Geduld mich mit wxpython zu plagen.

Gruss,
Jonas

ps:
So sieht es derzeit aus:
http://www.myimg.de/?img=lansharkd30.jpg
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 22. Juni 2007, 07:44

veers hat geschrieben:Wenn ich jedoch etwas "falsch" mache bekomme ich keine Exception sondern einen freundlichen Segfault.
Hallo Jonas!

Also meine Erfahrung mit wxPython geht in die Richtung, dass es durchaus flüssig läuft. Es reagiert aber gerne mit Segfaults, wenn schwerwiegende Anordnungsfehler gemacht wurden. Damit meine ich z.B.:
- wenn ein Widget mehrmals gleichzeitig verwendet wird (z.B. in einem Notebook)
- wenn ein Widget mehreren Sizern gleichzeitig zugeordnet wird.
- Threadingfehler (strikte Trennung zwischen Threads ist Pflicht)

Mehr fällt mir jetzt nicht ein. Ich muss zu geben, dass ich noch nicht so viele Segfaults hatte und die die ich hatte, klärten sich ziemlich schnell auf.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Freitag 22. Juni 2007, 09:30

...Es erhöht den Refcount nicht wenn ich eine Imagelist zuweise.. :roll:
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Montag 25. Juni 2007, 16:20

veers hat geschrieben: Meine Frage:
Ist wxpython immer so Buggy oder mach ich einfach etwas falsch?
Hoi,

Wahrscheinlich liegt es an Dir ;-). Aber im Ernst: Kannst Du ein kleines Beispiel entwerfen, was den segfault generiert? Damit könntest entweder nochmal hier nachfragen oder auf der Mailingliste. Wenn Du wirklich einen schweren Bug gefunden hast, wirst Du dort offene Türen einrennen.

Gruß,
Christian
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Montag 25. Juni 2007, 18:02

CM hat geschrieben:
veers hat geschrieben: Meine Frage:
Ist wxpython immer so Buggy oder mach ich einfach etwas falsch?
Hoi,

Wahrscheinlich liegt es an Dir ;-). Aber im Ernst: Kannst Du ein kleines Beispiel entwerfen, was den segfault generiert? Damit könntest entweder nochmal hier nachfragen oder auf der Mailingliste. Wenn Du wirklich einen schweren Bug gefunden hast, wirst Du dort offene Türen einrennen.

Gruß,
Christian
Habe mich von WX bereits genervt verabschiedet und bin zu GTK zurück gekehrt. Das entspricht mir mehr. Ein Beispiel will ich dennoch liefern:

Code: Alles auswählen

import wx 
         
class Window(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "b000m", size = (600,400))
        lst = wx.ListCtrl(self)
        il = wx.ImageList(128, 128)
        il.Add(wx.Bitmap("icon.png"))
        lst.SetImageList(il, wx.IMAGE_LIST_NORMAL)
        li = wx.ListItem() 
        li.SetImage(0)
        li.SetText("Spam") 
        lst.InsertItem(li)

app = wx.App()
Window().Show()
app.MainLoop() 
So böswillig ist das nicht ;)
Mir ist aber bewusst das nichts passier solange ich eine Referenz auf il behalte.
Mephisto
User
Beiträge: 28
Registriert: Mittwoch 17. Januar 2007, 15:52

Montag 25. Juni 2007, 18:32

Hm, wenn man SetImageList durch AssignImageList austauscht funktioniert das Beispiel, aber ich muss zugeben dass man das in der Doku klarer schreiben könnte :)

lg mephisto
Antworten