[issue1726] tmpfs "malloc limit exceeded" panic

Venkatesh Srinivas (via DragonFly issue tracker) sinknull at leaf.dragonflybsd.org
Sat Sep 11 06:01:57 PDT 2010


Venkatesh Srinivas <me at acm.jhu.edu> added the comment:

Tux: That's good to hear!

----

This test program:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

main() {
        int i;
        char id[320] = {};

        for (i = 0; i < 10000000; i++) {
                sprintf(id, "%09d", i);
                link("sin.c", id);
        }

        return 0;
}
----
I expected it to exhaust the tmpfs dirent zone on a low-memory system, where the 
dirent zone limit was less than the system limit on hardlinks. Instead I 
exhausted the vfscache zone: 

panic: vfscache: malloc limit exceeded
mp_lock = 00000000; cpuid = 0
Trace beginning at frame 0x54ee5a10
panic(ffffffff,54ee5a38,55492c08,82d43e0,40400840) at 0x80e1d33
panic(8287563,829176f,4c8b7339,0,55492c08) at 0x80e1d33
kmalloc(a,82d43e0,2,0,54ee5bec) at 0x80df67c
cache_unlock(0,0,52b48d00,52ba4b00,40400000) at 0x812c274
cache_nlookup(54ee5bec,54ee5af4,54ee5bec,54ee5bec,40400000) at 0x81302ed
nlookup(54ee5bec,5503e4c8,54ee5c24,52a45540,5503e4c8) at 0x8138665
kern_link(54ee5c24,54ee5bec,552881d8,52ba4b00,526dc698) at 0x8141aa6
sys_link(54ee5c94,0,0,82c46cc,292) at 0x8147475
syscall2(54ee5d40,52a1dd40,0,0,54ee5d38) at 0x8265d6d
user_trap(54ee5d40,54e8bb88,82667bd,0,0) at 0x82660af
go_user(54ee5d38,0,0,7b,0) at 0x826663e
Debugger("panic")

CPU0 stopping CPUs: 0x00000000
 stopped
Stopped at      0x826352d:      movb    $0,0x83f6194
db>

(hardlinks are the one of two things in tmpfs that allocate dirents; the other 
allocation is already bounded by the node limits, so its not a problem).

_____________________________________________________
DragonFly issue tracker <bugs at lists.dragonflybsd.org>
<http://bugs.dragonflybsd.org/issue1726>
_____________________________________________________






More information about the Bugs mailing list