[comp.unix.programmer] Strange mmap behaviour when exiting a program. Help anyone?

collberg@dna.lth.se (Christian S. Collberg) (10/04/90)

There has been some talk lately about mmap and various bugs. I'm running
SunOS 4.1 on a SUN 3/80 and am having problems with mmap efficiency when 
exiting a program. This is what I do:

BEGIN
  1) FOR f IN approx 100 different files DO
       a) open f for reading;
       b) addr := mmap(0, SIZEOF (f), PROT_READ, MAP_PRIVATE, f, 0);
       c) close f;
       d) read the *beginning* of f; 
       e) munmap (addr, SIZEOF (f));
     END;


  2) FOR f IN approx 100 different files DO
       a) open f for reading;
       b) addr := mmap(0, SIZEOF (f), PROT_READ, MAP_PRIVATE, f, 0);
       c) close f;
       d) read the *end* of f;
       e) munmap (addr, SIZEOF (f));
     END;
END;

Everything works fine until I try to exit the program. After the last 
statement has been executed it takes the system approximately 10 seconds
before it gives me the prompt back. During this time the process seems
to consume 100% of the CPU power. Does anyone know what it is doing?
Is it cleaning up after the 200 mmaps? Am I doing something wrong?

Thanks in advance for any info you might have.

Chris Collberg
collberg@dna.lth.se