Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Aug 2009 09:38:13 +0400
From:      pluknet <pluknet@gmail.com>
To:        freebsd-stable <freebsd-stable@freebsd.org>
Subject:   softdep_setup_freeblocks: kmem_malloc(4096): kmem_map too small
Message-ID:  <a31046fc0908042238u2a920cecmbed34f5e0c73c1cb@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi.

We have a problem with user running with exceed quota:

Disk quotas for user eviluser (uid 9181):
    Filesystem   usage   quota   limit   grace   files   quota   limit   grace
         /home 6172656 6172672 6172672           14723       0       0

Some types of ufs operations running under him lead to kernel
panic due to out of kernel memory (tested on 6.2-R, and 6.4-R):

db> x/s *panicstr
buf.1:  kmem_malloc(4096): kmem_map too small: 335544320 total allocated

Upping the higher level of vm.kmem_size_max doesn't help much,
postponing that panic little farther.

db> bt
Tracing pid 7242 tid 100772 td 0xca7a57d0
kdb_enter(c0924e28) at kdb_enter+0x2b
panic(c093a575,1000,14000000,c17f7818,0,...) at panic+0x127
kmem_malloc(c10680c0,1000,402,ef34e7bc,c07fb86d,...) at kmem_malloc+0x7d
page_alloc(c10613c0,1000,ef34e7af,402,0,...) at page_alloc+0x1a
slab_zalloc(c10613c0,402,c1061480,c10613c0,da68220c,...) at slab_zalloc+0xdd
uma_zone_slab(c10613c0,502) at uma_zone_slab+0xe8
uma_zalloc_bucket(c10613c0,502) at uma_zalloc_bucket+0x15c
uma_zalloc_arg(c10613c0,0,502) at uma_zalloc_arg+0x292
malloc(b8,c09d4ba0,502,0,0,...) at malloc+0x46
softdep_setup_freeblocks(cc8fb18c,0,0,800,cc8fb18c,ffffffe0,ffffffff,0,0) at sof
tdep_setup_freeblocks+0x48
ffs_truncate(c89e3990,0,0,800,c94f4300,...) at ffs_truncate+0x5cb
ffs_write(ef34ebec) at ffs_write+0x603
VOP_WRITE_APV(c09d5960,ef34ebec) at VOP_WRITE_APV+0xce
vn_write(caba7000,ef34ecbc,c94f4300,0,ca7a57d0) at vn_write+0x1ee
dofilewrite(ca7a57d0,7,caba7000,ef34ecbc,ffffffff,...) at dofilewrite+0x77
kern_writev(ca7a57d0,7,ef34ecbc,7e99c3c,42f6e8,...) at kern_writev+0x3b
write(ca7a57d0,ef34ed04) at write+0x45
syscall(3b,82b003b,bfbf003b,8851,82bb000,...) at syscall+0x2bf
Xint0x80_syscall() at Xint0x80_syscall+0x1f
--- syscall (4, FreeBSD ELF32, write), eip = 0x281ae32f, esp = 0xbfbfbbdc, ebp =
 0xbfbfbbf8 ---

Always, afaics, the source of panics is a process running apache:
db> show proc 7242
Process 7242 (httpd) at 0xca7a3648:
 state: NORMAL
 uid: 9181  gids: 999, 999, 9181
 parent: pid 3799 at 0xca468000
 ABI: FreeBSD ELF32
 arguments: /home/eviluser/etc/apache/bin/httpd
 threads: 1
100772                   Run     CPU 5               httpd

The type of a ufs operations is always the same:
a process of that user tries to write data to fs and falls back
(due to exceed quotas) to ffs_truncate() where it panics.

I couldn't reproduce it, that happens once per several days.
freeblks malloc type looks a bit leaky and a cause of panic.

db> show malloc
              Type       Allocs        Frees         Used
...
          freeblks      3233513      2578006       655507
...


db> show lockedbufs
buf at 0xdbd84c88
b_flags = 0x20000220<vmio,done,cache>
b_error = 0, b_bufsize = 16384, b_bcount = 16384, b_resid = 0
b_bufobj = (0xcc1bfa50), b_data = 0xdc855000, b_blkno = 1624763616
b_npages = 4, pages(OBJ, IDX, PA): (0xcdb2cce4, 0xc, 0xb638b000),(0xcdb2cce4, 0x
d, 0x6fe2c000),(0xcdb2cce4, 0xe, 0xca8d000),(0xcdb2cce4, 0xf, 0xb216e000)
 lock type bufwait: EXCL (count 1) by thread 0xcb41e190 (pid 11437)
buf at 0xdbd86398
b_flags = 0x20000000<vmio>
b_error = 0, b_bufsize = 16384, b_bcount = 16384, b_resid = 0
b_bufobj = (0xc8165c70), b_data = 0xdc89d000, b_blkno = 545231232
b_npages = 4, pages(OBJ, IDX, PA): (0xc81695ac, 0x40ff230, 0x842dc000),(0xc81695
ac, 0x40ff231, 0xdfd000),(0xc81695ac, 0x40ff232, 0x3b3e000),(0xc81695ac, 0x40ff2
33, 0x201f000)
db> show lockedvnods
Locked vnodes

0xcc144550: tag ufs, type VDIR
    usecount 1, writecount 0, refcount 3 mountedhere 0
    flags ()
    v_object 0xc9c6e000 ref 0 pages 1
     lock type ufs: EXCL (count 1) by thread 0xd00e4af0 (pid 11041)
        ino 203063289, on dev aacd0s1g

0xcc1bf990: tag ufs, type VDIR
    usecount 1, writecount 0, refcount 6 mountedhere 0
    flags ()
    v_object 0xcdb2cce4 ref 0 pages 22
     lock type ufs: EXCL (count 1) by thread 0xcb41e190 (pid 11437)
with 1 pending
        ino 203063639, on dev aacd0s1g

0xcdd84dd0: tag ufs, type VDIR
    usecount 1, writecount 0, refcount 3 mountedhere 0
    flags ()
     lock type ufs: EXCL (count 1) by thread 0xc8de8000 (pid 3612)
        ino 263490091, on dev aacd0s1g

0xc89e3990: tag ufs, type VREG
    usecount 1, writecount 1, refcount 3 mountedhere 0
    flags ()
    v_object 0xc98a1294 ref 0 pages 4
     lock type ufs: EXCL (count 1) by thread 0xca7a57d0 (pid 7242)
        ino 140245401, on dev aacd0s1g


-- 
wbr,
pluknet



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a31046fc0908042238u2a920cecmbed34f5e0c73c1cb>