Schuld war die funktion dprintf.
Diese interne LinuxFunktion hat einen Fehler und sollte daher nicht benutzt werden. Bei jedem Aufruf werden ein paar KB Mem reserviert und nicht mehr freigegeben.
Die Memauslastung steigt dann bis zu ca. 2800 MB an (bis der Stack mem bereich des Programmes erreicht wird und kein weiterer mem mehr reserviert werden kann)
Ich habe kurz mal nachgeschaut wo diese Funktion überall verwendet wird.
Hab gesehen, das ist in E2, E1 und Neutrino. In VDR konnte ich nix finden.
Hier ein kleines Testprogramm mit dem man das auch schön testen kann.
main()
{
int x=0;
while(x<5000)
dprintf("test\n");
sleep(20);
}
einfach mit sh-linux-cpp compilieren und die a.out auf der Kathi anstarten. Dann einen top machen bevor das programm beendet (20 sekunden sind zeit).
Das Programm hat dann eine Memauslastung von über 2800MB.
Kommentar