Problem mit mmap

13/09/2012 - 15:19 von Norbert Hahn | Report spam
Hallo,

ich habe ein uraltes Programm (in C geschrieben, statisch gelinkt),
das eine Datei mit mmap liest, aber nicht genug Memory bekommt.
strace zeigt:

mmap2(NULL, 1673908224, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0)
= -1 ENOMEM (Cannot allocate memory)
mmap2(NULL, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE,
-1, 0)
= 0x5412e000
munmap(0x5412e000, 860160) = 0
munmap(0x54300000, 188416) = 0
mprotect(0x54200000, 135168, PROT_READ|PROT_WRITE) = 0
mmap2(NULL, 1673777152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0)
= -1 ENOMEM (Cannot allocate memory)

und ulimit -a zeigt
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 72703
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

uname -a liefert:
Linux RECHNER 2.6.9-89.33.1.ELsmp #1 SMP Mon Nov 15 18:50:44 EST 2010 i686
i686 i386 GNU/Linux

Der Quelltext des Programms existiert nicht.

Hat jemand eine Idee, was man da machen kann?

Norbert
 

Lesen sie die antworten

#1 Peter Matthias
13/09/2012 - 18:13 | Warnen spam
Norbert Hahn skribis:

Hallo,

ich habe ein uraltes Programm (in C geschrieben, statisch gelinkt),
das eine Datei mit mmap liest, aber nicht genug Memory bekommt.
strace zeigt:


Hat jemand eine Idee, was man da machen kann?



Das hilft Dir jetzt wahrscheinlich nicht viel: Datei verkleinern.

Mehr als 2 GiB kann ein Prozess bei 32 Bit nicht mappen. Der Prozess braucht
auch etwas, evtl. wurde vorher schon gemapped. Dann gibt's Fehler.

Evtl. würde ich es mal mit einem 64Bit Kernel versuchen, ich glaube aber
nicht, das es hilft.

Peter

Ähnliche fragen