Strange behaviour (processes "hung" in getblk state)

Robin P. Blanchard robin.blanchard at
Sat Jan 24 08:41:41 PST 2004

# top |fgrep makewhatis
20984 root      -4    0   812K   716K getblk 1   0:03  0.00%  0.00%

# sysctl debug.enter_debugger=ddb
debug.enter_debuDgger: ebugger("debug.enter_debugger")
Stopped at      Debugger+0x55:  xchgl   %ebx,in_Debugger.0
db> tr 20984
sched_switch(c5ff1000,2,c067cb2a,1d4,4a463321) at sched_switch+0x155
mi_switch(c5ff1000,50,c067cb2a,ca,1) at mi_switch+0x248
msleep(d26e9244,c06cc688,50,c0682e20,0) at msleep+0x4ff
acquire(e9b97a3c,2000020,600,e7,c0682aa7) at acquire+0xae
lockmgr(d26e9244,2090022,c6955e38,c5ff1000,c06d89e8) at lockmgr+0x457
getblk(c6955e38,0,0,800,0) at getblk+0x18f
breadn(c6955e38,0,0,800,0) at breadn+0x52
bread(c6955e38,0,0,800,0) at bread+0x4c
ffs_read(e9b97be4,c0684a6b,c5ff1000,1ff,c06d86f0) at ffs_read+0x3ff
vn_read(c62f7b6c,e9b97c80,c6292180,0,c5ff1000) at vn_read+0x1f5
dofileread(c5ff1000,c62f7b6c,4,80ee000,4000) at dofileread+0xdc
read(c5ff1000,e9b97d14,c069237a,3ee,3) at read+0x6b
syscall(806002f,2f,bfbf002f,806c158,4000) at syscall+0x2c0
Xint0x80_syscall() at Xint0x80_syscall+0x1d
--- syscall (3, FreeBSD ELF32, read), eip = 0x8061a4f, esp = 0xbfbfd3ac, ebp
= 0
xbfbfd3c8 ---

	-----Original Message----- 
	From: Ken Smith [mailto:kensmith at cse.Buffalo.EDU] 
	Sent: Thu 1/22/2004 1:50 PM 
	To: Robin P. Blanchard 
	Cc: Ken Smith; Kris Kennaway 
	Subject: Re: Strange behaviour

	On Thu, Jan 22, 2004 at 01:34:39PM -0500, Robin P. Blanchard wrote:
	> I also enabled DEBUG_VFS_LOCKS; but nothing of interest shows up
	> 'makeshatis' gets stuck in getblk. I've just setup serial console
on this
	> thing (along with BREAK_TO_DEBUGGER). How do I enter the debugger
over the
	> serial link (I know how from the terminal console)? Once there do
just do a
	> "tr $pid" to (hopefully) get some useful info ?
	I was able to get there by logging in as root, then do:
	        sysctl debug.enter_debugger=ddb
	That seems to drop the kernel to DDB on the serial port.
	Here is what seems typical of the processes that are wedged on my
	db> tr 1429
	sched_switch(c9e0f690,2,c0872111,1d4,75752699) at sched_switch+0xb5
	mi_switch(c9e0f690,50,c0872111,ca,1) at mi_switch+0x248
	msleep(d3bb3564,c092f9dc,50,c08782a0,0) at msleep+0x4ff
	acquire(edc26ab4,2000020,600,e7,c0877f27) at acquire+0xae
	lockmgr(d3bb3564,2090022,c78af410,c9e0f690,c0669ae3) at lockmgr+0x457
	getblk(c78af410,277b440,0,4000,0) at getblk+0x190
	breadn(c78af410,277b440,0,4000,0) at breadn+0x52
	bread(c78af410,277b440,0,4000,0) at bread+0x4c
	ffs_update(c9650208,0,1,54,edc26c4c) at ffs_update+0x235
	ufs_inactive(edc26c78,edc26c94,c069e77e,edc26c78,c087982c) at
ufs_inactive+0x205ufs_vnoperate(edc26c78,c087982c,c08794ad,7cc,c0910ce0) at
	vrele(c9650208,0,c0879d73,2cb,c9b5ab00) at vrele+0x16e
	fchdir(c9e0f690,edc26d14,c088ff8d,3ee,1) at fchdir+0x227
	syscall(805002f,805002f,bfbf002f,5,8058f00) at syscall+0x2c0
	Xint0x80_syscall() at Xint0x80_syscall+0x1d
	--- syscall (13, FreeBSD ELF32, fchdir), eip = 0x280c616f, esp =
0xbfbfe92c, ebp = 0xbfbfe9c8 ---
	There is one that's wedged in "ufs" instead of "getblk", and it looks
	like this:
	db> tr 2062
	sched_switch(c785e930,2,c0872111,1d4,9c0e2995) at sched_switch+0xb5
	mi_switch(c785e930,50,c0872111,ca,1) at mi_switch+0x248
	msleep(c83d55c0,c092f8e0,50,c087d04c,0) at msleep+0x4ff
	acquire(edb68a54,1000040,600,e7,14b) at acquire+0xae
	lockmgr(c83d55c0,1010002,c83d5514,c785e930,edb68a70) at lockmgr+0x457
	vop_stdlock(edb68a98,edb68a7c,c07adda8,edb68a98,edb68ab4) at
	vop_defaultop(edb68a98,edb68ab4,c06ad4a9,edb68a98,edb68ab4) at
	ufs_vnoperate(edb68a98,edb68ab4,c0635f3a,c83d5514,8) at
	vn_lock(c83d5514,10002,c785e930,760,0) at vn_lock+0xf9
	vget(c83d5514,2,c785e930,dbdde,c785e930) at vget+0x116
	vfs_cache_lookup(edb68b8c,edb68ba8,c0697556,edb68b8c,c0887cd1) at
	ufs_vnoperate(edb68b8c,c0887cd1,c785e930,c063600d,c785e930) at
	lookup(edb68c28,0,c0878f12,a6,c785e930) at lookup+0x376
	namei(edb68c28,edb68c44,c0669ae3,c0934e80,c0934de0) at namei+0x27e
	lstat(c785e930,edb68d14,c088ff8d,3ee,2) at lstat+0x52
	syscall(806002f,805002f,bfbf002f,805e500,805e548) at syscall+0x2c0
	Xint0x80_syscall() at Xint0x80_syscall+0x1d
	--- syscall (190, FreeBSD ELF32, lstat), eip = 0x280c556f, esp =
0xbfbfebfc, ebp = 0xbfbfec98 ---
	                                                Ken Smith
	- From there to here, from here to      |
kensmith at
	  there, funny things are everywhere.   |
	                      - Theodore Geisel |

More information about the freebsd-current mailing list