Seit zwei Wochen bastel ich mich jetzt schon um einen mir unerklärlichen Segfault beim Importieren von PyGTK herum. Heute hab ich dann endlich mal etwas Zeit gehabt das ganze genauer unter die Lupe zu nehmen. Das Modul in meinem Projekt, das die GUI-Funktionalität bereitstellt, enthält folgende Imports:
import pygtk
pygtk.require('2.0')
import gtk
Bis zur require-Zeile ist das alles kein Problem, doch import gtk
hat in manchen Situationen den Segfault ausgelöst. Seit heute weiß ich, dass dieser Segfault auftritt, wenn vorher bereits ein Modul geladen wurde, das gegen GTK gelinkt wurde, in meinem Projekt z.B. der loader:
from ship.icewing import loader
import pygtk
pygtk.require('2.0')
import gtk
Diese Variante führt garantiert in den Segfault, während folgendes kein Problem ist:
import pygtk
pygtk.require('2.0')
import gtk
from ship.icewing import loader
So weiß ich jetzt zumindest, wie ich den Fehler systematisch umgehen kann, schön ist das aber immer noch nicht. Vor allem muss jetzt der Nutzer meiner API die Import-Reihenfolge beachten. Hat irgendwer einen besseren Lösungsweg oder eine Idee, wo das Problem herkommt?