I have a small test program that consistently can't allocate more memory using mmap after 458878 allocations, no matter how much memory I allocate per call (tried with 8, 80, 800 and 4000 bytes per call): mmap returns ENOMEM. The machine has plenty memory available (2Gb and no other processes are running except standard daemons) so there should be enough memory. Some added printk statements in mm/mmap.c do_mmap_pgoff() revealed this happens at the following bit of code: /* Obtain the address to map to. we verify (or select) it and ensure * that it represents a valid section of the address space. */ if (flags & MAP_FIXED) { if (addr & ~PAGE_MASK) return -EINVAL; } else { addr = get_unmapped_area(addr, len); if (!addr) { printk("do_mmap_pgoff: cannot allocate unmapped memory, returning ENOMEM\n"); return -ENOMEM; } } Silly test program is attached (I didn't write it, so don't punish me for the ugly code :). Wichert. -- _________________________________________________________________ / Generally uninteresting signature - ignore at your convenience \ | wichert@liacs.nl http://www.liacs.nl/~wichert/ | | 1024D/2FA3BC2D 576E 100B 518D 2F16 36B0 2805 3CB8 9250 2FA3 BC2D |