NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/52769: Deadlock in ffs?



The following reply was made to PR kern/52769; it has been noted by GNATS.

From: Nick Hudson <skrll%netbsd.org@localhost>
To: gnats-bugs%NetBSD.org@localhost, kern-bug-people%netbsd.org@localhost,
 gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/52769: Deadlock in ffs?
Date: Wed, 29 Nov 2017 12:46:11 +0000

 On 11/28/17 15:00, martin%NetBSD.org@localhost wrote:
 
 > So I dropped into ddb and got:
 > Stopped in pid 0.2 (system) at  netbsd:breakpoint+0x5:  leave
 > db{0}> ps
 > PID    LID S CPU     FLAGS       STRUCT LWP *               NAME WAIT
 > 29181    1 3   0         0   ffffe403e1d3c200             reboot tstile
 > 3481     1 3   0        80   ffffe40368d5e080               tcsh ttyraw
 > 18588    1 3   2   1000000   ffffe4040092db80                cvs biolock
 > 14652    1 3   3        80   ffffe403be513640                 sh wait
 > 13756    1 3   1        80   ffffe40397f5f460          ssh-agent select
 > 7734     1 3   0        80   ffffe4038e491460               tcsh pause
 > 22820    1 3   5   1000000   ffffe403ccf032c0                cvs biolock
 > db{0}> bt /a 0xffffe4040092db80
 > trace: pid 18588 lid 1 at 0xffffe4011e02b920
 > sleepq_block() at netbsd:sleepq_block+0x97
 > cv_timedwait() at netbsd:cv_timedwait+0xa9
 > bbusy() at netbsd:bbusy+0x7b
 > getblk() at netbsd:getblk+0x5a
 > bio_doread() at netbsd:bio_doread+0x1d
 > bread() at netbsd:bread+0x1a
 > ffs_update.part.3() at netbsd:ffs_update.part.3+0x112
 > ffs_truncate() at netbsd:ffs_truncate+0xd91
 > ufs_truncate_retry() at netbsd:ufs_truncate_retry+0x79
 > ufs_inactive() at netbsd:ufs_inactive+0x1ac
 > VOP_INACTIVE() at netbsd:VOP_INACTIVE+0x33
 > vrelel() at netbsd:vrelel+0x168
 > ufs_remove() at netbsd:ufs_remove+0xab
 > VOP_REMOVE() at netbsd:VOP_REMOVE+0x37
 > do_sys_unlinkat.isra.5() at netbsd:do_sys_unlinkat.isra.5+0x1eb
 > syscall() at netbsd:syscall+0x1bc
 > --- syscall (number 10) ---
 > 7a93d4312a7a:
 >
 > and:
 >
 > db{0}> bt /a ffffe403ccf032c0
 > trace: pid 22820 lid 1 at 0xffffe4011de34820
 > sleepq_block() at netbsd:sleepq_block+0x97
 > cv_timedwait() at netbsd:cv_timedwait+0xa9
 > bbusy() at netbsd:bbusy+0x7b
 > getblk() at netbsd:getblk+0x5a
 > bio_doread() at netbsd:bio_doread+0x1d
 > bread() at netbsd:bread+0x1a
 > ffs_alloccg() at netbsd:ffs_alloccg+0xcc
 > ffs_hashalloc() at netbsd:ffs_hashalloc+0x28
 > ffs_alloc() at netbsd:ffs_alloc+0x11e
 > ffs_balloc() at netbsd:ffs_balloc+0x570
 > ufs_mkdir() at netbsd:ufs_mkdir+0x22b
 > VOP_MKDIR() at netbsd:VOP_MKDIR+0x3b
 > do_sys_mkdirat.isra.7.constprop.12() at netbsd:do_sys_mkdirat.isra.7.constprop.1
 > 2+0x167
 > syscall() at netbsd:syscall+0x1bc
 > --- syscall (number 136) ---
 > 78c2024a686a:
 >
 This reminds me of the pool page problem on erlite where not all the 
 memory was
 available as direct map (and therefore PMAP_MAP_POOLPAGEable) meaning that
 in low memory situations the pool wouldn't grow. A direct map page never 
 became
 available.
 
 I fixed this by making all erlite memory available as direct map via xkseg
 
 
 http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/mips/mips/pmap_machdep.c.diff?r1=1.20&r2=1.21
 
 http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/mips/include/vmparam.h.diff?r1=1.59&r2=1.60
 
 Nick
 


Home | Main Index | Thread Index | Old Index