Hallo, wir haben SuSE Linux 7.3. Darauf haben wir folgendes Problem: Ein Programm, dass 1200MB RAM verbraucht, stuerzt irgendwann mit 'segmetation fault' ab. Und das, obwohl die Grenzen des Rechners noch lange nicht erreicht sind. Mehrere kleine Programme gleichzeitig, die zusammen mehr Resourcen verbraten, laufen anstandslos durch. Der Hersteller des Compilers (Portland Group) schwoert, dass das nicht an seinem Compiler liegt. Gibt es irgendwo versteckt im System noch eine Begrenzung, wieviel ein einzelner Prozess brauchen darf? Oder ist da ein generelles Linux-Problem? Ein Programmierfehler kann es imho nicht sein, da in dem gesamten Code kein Speicher dynamisch allokiert wird (fortran77 kennt sowas gar nicht). Ausserdem stuerzt der Code nicht irgendwann ab (so das man den Crash im Debugger verfolgen koennte), sondern direkt beim Start: Sobald das Programm gestartet wird, gibt es mit segmentation fault zurueck. Ist vielleicht da die Ursache im Kernel? Wenn ja, wo koennte es sein?Gruss, Ulrich Hiller Ulrich Hiller Max-Planck-Institut fuer Astronomie Koenigstuhl 17 69117 Heidelberg Germany phone +49 6221 528238 fax +49 6221 528246 email hiller@mpia.de
Am Dienstag, 20. Mai 2003 16:04 schrieb Ulrich Hiller: Hallo schau einmal unter man setrlimit Gruss und viele Erfolg Robert
Hallo,
wir haben SuSE Linux 7.3. Darauf haben wir folgendes Problem: Ein Programm, dass 1200MB RAM verbraucht, stuerzt irgendwann mit 'segmetation fault' ab. Und das, obwohl die Grenzen des Rechners noch lange nicht erreicht sind. Mehrere kleine Programme gleichzeitig, die zusammen mehr Resourcen verbraten, laufen anstandslos durch. Der Hersteller des Compilers (Portland Group) schwoert, dass das nicht an seinem Compiler liegt. Gibt es irgendwo versteckt im System noch eine Begrenzung, wieviel ein einzelner Prozess brauchen darf? Oder ist da ein generelles Linux-Problem?
Ein Programmierfehler kann es imho nicht sein, da in dem gesamten Code kein Speicher dynamisch allokiert wird (fortran77 kennt sowas gar nicht). Ausserdem stuerzt der Code nicht irgendwann ab (so das man den Crash im Debugger verfolgen koennte), sondern direkt beim Start: Sobald das Programm gestartet wird, gibt es mit segmentation fault zurueck. Ist vielleicht da die Ursache im Kernel? Wenn ja, wo koennte es sein?Gruss, Ulrich Hiller
Ulrich Hiller Max-Planck-Institut fuer Astronomie Koenigstuhl 17 69117 Heidelberg Germany phone +49 6221 528238 fax +49 6221 528246 email hiller@mpia.de
Hi, On Tue, 20 May 2003, Ulrich Hiller wrote:
wir haben SuSE Linux 7.3. Darauf haben wir folgendes Problem:
7.3, hmm. Es gab da Tatsache Probleme mit extrem grossen static Daten pro Programm (koennte auch am Kernel gelegen haben, ich weiss nicht mehr), allerdings kann ich mich bloss an reports im Zusammenhang mit g77 (also nicht Portland Group) erinnern. Ich wuerde es auf jeden Fall erstmal mit ner neuen Distri und Compiler versuchen, bevor ich allzu viel Hirnschmalz reinstecke.
Ein Programm, dass 1200MB RAM verbraucht, stuerzt irgendwann
1.2GB ist allerdings auch schon recht haeftig fuer ne ia32 Kiste (ist doch eine, oder? Du gibst nicht gerade viele Informationen an). Das normale Limit unter Linux pro Prozess ist 3GB User-space. Der allerdings ist unterteilt in mehrere Sections von denen so ca. 2GB fuer mmap() zur Verfuegung stehen. static data wird mmaped, der Prozess koennte also tatsache an seine Grenze stossen.
mit 'segmetation fault' ab.
Das ist das Symptom wenn schon fuer das Laden des Prozesses nicht genug Addressraum zur Verfuegung stand (bei malloc() oder so haette man ja auf NULL testen koennen, und zur Laufzeit ne Fehlermeldung ausgeben, aber da dies alles schon vor main() passiert, ist es nicht moeglich).
Und das, obwohl die Grenzen des Rechners noch lange nicht erreicht sind. Mehrere kleine Programme gleichzeitig, die zusammen mehr Resourcen verbraten, laufen anstandslos durch.
Ja, diese Limits sind pro Prozess, da der Addressraum eben auf max. 32 Bit begrenzt ist. Ciao, Micha.
participants (3)
-
Michael Matz
-
Robert Jenni
-
Ulrich Hiller