SuSE Linux: Version 6.4
Dieser Artikel bezieht sich auf eine ältere SuSE Linux Version.
Daher ist es möglich, dass die Informationen in diesem Artikel
nicht mehr auf dem neuesten Stand sind bzw. der Artikel nicht
mehr funktionierende Links enthält.
Kernel: Version 2.2.14.SuSE
In der VM eines jeden Prozesses gibt es einen sog. Heap und einen Stack. Diese beiden Bereiche können sehr nah beieinander liegen.
| GAP | -------------------------- | heap | | stack | -------------------------- Y XAusgegangen von obiger Situation, in der das Register ESP auf Stelle X zeigt und dann eine Funktion aufgerufen wird, die eine Menge von GAP*PAGE_SIZE Speicher reserviert plus ein paar weitere KByte, so daß das Register ESP auf die Stelle Y zeigt, würde das zu einer Zerstörung des Heap Speichers führen.
Fehler, die auf diese Weise entstehen, sind nur schwer oder gar nicht nachvollziehbar. Aus diesem Grund hat SuSE eine Erweiterung in den Kernel eingebaut, die dafür sorgt, daß zwischen Heap und Stack ein Bereich entsteht, der einen Segmentation Fault auslöst, sobald dort hineingeschrieben wird.
Per Default steht dieser Wert auf 128, dessen Einheit eine sog. Page ist. Eine Page (engl. = Seite) ist 4096 Bytes groß, so daß der Wert 128 eine grösse von 512 kByte ergibt.
Für das J2SEE von Sun ist dieser Wert zu hoch.
Mitarbeiter von Sun, die am Java Linux Projekt mitarbeiten, reagierten positiv auf dieses Feature, schlugen jedoch vor, den Wert von 128 auf 10 zu setzen.
Vollständig deaktivieren lässt sich dieses Feature durch einen Wert von 0.
echo 10 > /proc/sys/vm/heap-stack-gapDieser Wert wird nach jedem Booten wieder überschrieben. Um den Wert fest einzustellen, geben Sie einmalig als Benutzer root folgendes ein:
echo "echo 10 > /proc/sys/vm/heap-stack-gap" >> /sbin/init.d/boot.local