Seite 1 von 1
Segmentation fault
Verfasst: Sonntag 26. März 2006, 23:16
von Lampy
Hallo!
Was bedeutet es, wenn ein Programm als Ausgabe nur folgendes liefert:
Segmentation fault
Und dann bricht es ab. Ich habe dieses Verhalten auf einem Gentoo-PC mit Python 2.4 gesehen, auf SuSE mit Python 2.4 allerdings nicht.
Grüße
Markus
Segfault
Verfasst: Montag 27. März 2006, 05:37
von sunmountain
Einfach gesagt bedeutet das: Zugriffsverletzung.
Ein Programm versucht z.B. auf einen Speicherbereich zuzugreifen,
auf den es nicht zugreifen darf und wird dann vom Betriebssystem
beendet.
Du solltest einen Bugreport aufmachen.
Wann tritt dieses Problem auf, ist es reproduzierbar ?
Verfasst: Montag 27. März 2006, 06:41
von modelnine
Vor allen Dingen solltest Du posten mit welcher Python-Erweiterung Du einen Segfault hinbekommst; die Core kann eigentlich keine Seg-Faults produzieren, außer Dein System ist mächtig im Argen...
Nicht unbedingt
Verfasst: Montag 27. März 2006, 07:32
von sunmountain
Das "python" selbst einen segfault wirft, ist nicht so unwahrscheinlich,
schließlich nutzt es auch nur Bibliotheken des Systems.
Aber, mit Verlaub, bei Gentoo wundert micht nix.
Man kann sich schon mal mit ein paar USE flags das System
ziehmlich ruinieren.
Wobei das natürlich nichts über die allgemeine Qualität von Gentoo aussagt.
Ich habe so einen Fehler aber auch schon mal gesehen, und schuld war
letzen Endes keine Software:
Schlicht ein RAM Riegel hatte ne Macke.
Happy debugging
import pdb
pdb.run("my_main()")
Verfasst: Montag 27. März 2006, 11:34
von modelnine
Das "python" selbst einen segfault wirft, ist nicht so unwahrscheinlich,
schließlich nutzt es auch nur Bibliotheken des Systems.
Aber, mit Verlaub, bei Gentoo wundert micht nix.
Wenn Du meinen Text noch mal richtig liest wirst Du sehen dass ich gesagt habe dass wenn mit dem System etwas im argen ist auch die Python-Core eine Exception werfen kann.

Unabhängig davon ists aber mit einer unsauber programmierten Erweiterung erheblich einfacher so was hinzubekommen; das hab ich oft genug gesehen...
Aber, ganz davon abgesehen, Gentoo ist eher weniger wegen der USE-Flags anfällig, sondern wegen Leuten, die meinen sie müssten die CFLAGS so aggressiv auf Optimierungen einstellen, dass gcc (teilweise) kaputten Code erzeugt.
Ich fahre auch unter Gentoo, hatte bisher noch keine Probleme, das kann aber einfach daran liegen dass ich sehr konservativ mit "-march=athlon64 -O2 -pipe" fahre...
Verfasst: Montag 27. März 2006, 12:50
von Leonidas
modelnine hat geschrieben:Aber, ganz davon abgesehen, Gentoo ist eher weniger wegen der USE-Flags anfällig, sondern wegen Leuten, die meinen sie müssten die CFLAGS so aggressiv auf Optimierungen einstellen, dass gcc (teilweise) kaputten Code erzeugt.
Sorry, das muss jetzt sein:
Joghurt im Debianforum hat geschrieben:Besonders beliebt sind dort Flags wie "-fproduce-broken-code -fcrash-and-burn -minvalid"
Jetzt nichts gegen Gentoo, aber das finde ich einfach herrlich

Verfasst: Montag 27. März 2006, 21:56
von BlackJack
modelnine hat geschrieben:Vor allen Dingen solltest Du posten mit welcher Python-Erweiterung Du einen Segfault hinbekommst; die Core kann eigentlich keine Seg-Faults produzieren, außer Dein System ist mächtig im Argen...
Wenn man weiss wie, dann bekommt man einen Segfault auch mit den Standardmodulen oder sogar den Builtins hin. Da war mal ein kleiner "Wettbewerb" in der englischsprachigen Newsgroup.
Verfasst: Montag 27. März 2006, 22:01
von modelnine
Jajaja... Ich weiß wie man mittels new zum Beispiel segfaults produzieren kann. Aber das ist auch dokumentiert. "Undokumentierte" segfaults gibts eigentlich wenige in der Python-Core... Und ehrlich gesagt glaub ich nicht dass der OP auf so einen undokumentierten Segfault gestoßen ist, sondern vielmehr sein System zerschrotet hat oder eine Python-Erweiterung benutzt die nicht sauber ist. Das war zumindest in meinem Fall immer das Problem wenn Python nicht lief.