Segmentation fault

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lampy
User
Beiträge: 7
Registriert: Samstag 25. Februar 2006, 19:36

Sonntag 26. März 2006, 23:16

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
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

Montag 27. März 2006, 05:37

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 ?
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Montag 27. März 2006, 06:41

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...
--- Heiko.
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

Montag 27. März 2006, 07:32

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()")
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Montag 27. März 2006, 11:34

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...
--- Heiko.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 27. März 2006, 12:50

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 :D
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Montag 27. März 2006, 21:56

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.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Montag 27. März 2006, 22:01

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.
--- Heiko.
Antworten