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.