Subject: Re: Reading file causes process to hang on getblk
To: Dave Huang <khym@bga.com>
From: David Brownlee <abs@anim.dreamworks.com>
List: current-users
Date: 07/05/1997 11:02:02
	Two small ideas...
	  o Boot to single user then run 'fsck -f' just to confirm the
	    filesystem is ok.
	  o Try 'dd' on the raw partition (again, to see if it is a
	    filesystem problem).

		

- Thought for the day... "I miss my dog"

On Sat, 5 Jul 1997, Dave Huang wrote:

> Hi there... I've got a rather annoying problem :) I've got this file
> in my directory, and whenever I try to read from it, the process doing
> the read will just hang. A "ps l" shows the process with a WCHAN of
> getblk, and a ^T shows the same thing. When this happens, trying to
> "ls" the directory the file is in will also hang. I think even an "ls"
> in the parent directory will hang too. "shutdown -r now" hangs after
> the "syncing disks..." message, and if I break into ddb and do a "ps",
> I see that the process trying to read the file is still hanging
> around.
> 
> The problem is 100% repeatable... I've tried running gzip, cat, cp,
> dd, and cksum on the file, and they all hang. However, I _can_ run
> "file" on it, so it looks like it's only having trouble with a certain
> block of the file:
> 
> dd if=frame.01705.ppm of=/dev/null count=48 works just fine, but
> dd if=frame.01705.ppm of=/dev/null count=49 will hang.
> 
> I don't get any kernel messages, and my drives are fine, so it's not a
> bad block on the hard drive or anything...
> 
> The filesystem is on a ccd, made up of two partitions striped
> together. The directory the file's in has 2004 files in it, which
> probably makes it the biggest directory I have. 
> 
> I compiled a kernel with debugging symbols, then booted into single
> user mode, catted the file, then broke into ddb and made it give me a
> crash dump, so I've got a dump and debugging kernel, but I don't know
> what to do with it :) Assuming I did this correctly, here's a stack
> trace of the process:
> 
> #0  mi_switch () at ../../../../kern/kern_synch.c:615
> #1  0xf8119c51 in bpendtsleep ()
> #2  0xf812e32b in getblk (vp=0xf8891180, blkno=3, size=8192, slpflag=0, 
>     slptimeo=0) at ../../../../kern/vfs_bio.c:553
> #3  0xf812ee7c in cluster_read (vp=0xf8891180, filesize=230415, lblkno=3, 
>     size=8192, cred=0xffffffff, bpp=0xfcc93eb0)
>     at ../../../../kern/vfs_cluster.c:133
> #4  0xf8196f63 in ffs_read (v=0x0) at ../../../../ufs/ufs/ufs_readwrite.c:126
> #5  0xf813732f in vn_read (fp=0xf889b600, uio=0xfcc93f20, cred=0xf87b4300)
>     at ../../../../sys/vnode_if.h:269
> #6  0xf811e6e3 in sys_read (p=0xf889cd00, v=0xfcc93f88, retval=0xfcc93f80)
>     at ../../../../kern/sys_generic.c:112
> #7  0xf81aeb58 in syscall (frame={tf_es = 31, tf_ds = 31, tf_edi = 1, 
>       tf_esi = 3, tf_ebp = -138421800, tf_ebx = -138421692, tf_edx = 53244, 
>       tf_ecx = 69632, tf_eax = 3, tf_trapno = 3, tf_err = 2, tf_eip = 40827, 
>       tf_cs = 23, tf_eflags = 518, tf_esp = -138421924, tf_ss = 31, 
>       tf_vm86_es = 0, tf_vm86_ds = 0, tf_vm86_fs = 0, tf_vm86_gs = 0})
>     at ../../../../arch/i386/i386/trap.c:623
> 
> Anyone have some ideas and/or things for me to try?
> 
> My system's a Pentium, running a July 4 -current. My previous kernel
> (the one I was using when I first saw the problem) is from June 30.
> Kernel config file and dmesg stuff follow:
> 
> include "arch/i386/conf/std.i386"
> 
> options 	I586_CPU	# CPU classes; at least one is REQUIRED
> options 	VM86		# Virtual 8086 emulation
> 
> #options 	BIOSEXTMEM=80896	# size of extended memory
> 
> options 	DUMMY_NOPS	# speed hack; recommended
> options 	XSERVER,UCONSOLE
> options 	INSECURE	# insecure; allow /dev/mem writing for X
> 
> maxusers	32		# estimated number of users
> options		RTC_OFFSET=300	# hardware clock is this many mins. west of GMT
> 
> options 	DDB		# in-kernel debugger
> makeoptions	DEBUG="-g"	# compile full symbol table
> options 	DIAGNOSTIC	# internal consistency checks
> #options 	DEBUG		# internal debug messages
> options 	KTRACE		# system call tracing, a la ktrace(1)
> #options 	AUDIO_DEBUG
> 
> options 	SYSVMSG		# System V-like message queues
> options 	SYSVSEM		# System V-like semaphores
> options 	SYSVSHM		# System V-like memory sharing
> #options	SHMMAXPGS=1024	# 1024 pages is the default
> 
> options 	COMPAT_NOMID	# compatibility with 386BSD, BSDI, NetBSD 0.8,
> options 	COMPAT_09	# NetBSD 0.9,
> options 	COMPAT_10	# NetBSD 1.0,
> options 	COMPAT_11	# NetBSD 1.1,
> options 	COMPAT_12	# NetBSD 1.2,
> options 	COMPAT_43	# and 4.3BSD
> options 	TCP_COMPAT_42	# TCP bug compatibility with 4.2BSD
> 
> options 	COMPAT_LINUX	# binary compatibility with Linux
> options 	COMPAT_FREEBSD	# binary compatibility with FreeBSD
> 
> options 	EXEC_ELF32	# 32-bit ELF executables (SVR4, Linux)
> 
> options 	USER_LDT	# user-settable LDT; used by WINE
> options 	LKM		# loadable kernel modules
> 
> file-system 	FFS		# UFS
> #file-system 	MFS		# memory file system
> file-system 	NFS		# Network File System client
> #file-system 	CD9660		# ISO 9660 + Rock Ridge file system
> #file-system 	MSDOSFS		# MS-DOS file system
> file-system 	FDESC		# /dev/fd
> file-system 	KERNFS		# /kern
> file-system 	PROCFS		# /proc
> file-system 	UNION		# union file system
> 
> options		NFSSERVER	# Network File System server
> options 	FIFO		# FIFOs; RECOMMENDED
> 
> options 	GATEWAY		# packet forwarding
> options 	INET		# IP + ICMP + TCP + UDP
> options 	NETATALK	# AppleTalk
> options 	PPP_DEFLATE
> #options	PFIL_HOOKS	# pfil(9) packet filter hooks (Required
> 				# if you enable the pseudo-device ipfilter)
> 
> config		netbsd root on sd0a type ffs dumps on sd1b
> 
> #options 	SCSI_DELAY=10
> options		PCIVERBOSE
> 
> #options 	SCSIDEBUG
> #options 	CDROM_ASYNC
> 
> mainbus0 at root
> 
> pci0	at mainbus0 bus ?
> #eisa0	at mainbus0
> 
> pchb*	at pci? dev ? function ?	# PCI-Host bridges
> pcib*	at pci? dev ? function ?	# PCI-ISA bridges
> 
> isa*	at pcib?			# ISA on PCI-ISA bridge
> isa*	at mainbus0			# all other ISA
> 
> apm0	at mainbus0			# Advanced power management
> 
> #ppb*	at pci? dev ? function ?	# PCI-PCI bridges
> #pci*	at ppb? bus ?
> 
> npx0	at isa? port 0xf0 irq 13	# math coprocessor
> 
> #pc0	at isa? port 0x60 irq 1		# generic PC console device
> vt0	at isa? port 0x60 irq 1
> 
> com0	at isa? port 0x3f8 irq 4	# standard PC serial ports
> com1	at isa? port 0x2f8 irq 3
> com2	at isa? port 0x3e8 irq 7
> com3	at isa? port 0x2e8 irq 9
> 
> #lpt0	at isa? port 0x378 irq 7	# standard PC parallel ports
> 
> pms0	at pckbd? irq 12		# PS/2 auxiliary port mouse
> 
> ncr*	at pci? dev ? function ?	# NCR 538XX SCSI controllers
> scsibus* at ncr?
> 
> sd0	at scsibus? target 0 lun 0
> sd1	at scsibus? target 1 lun 0
> sd*	at scsibus? target ? lun ?	# SCSI disk drives
> st*	at scsibus? target ? lun ?	# SCSI tape drives
> cd*	at scsibus? target ? lun ?	# SCSI CD-ROM drives
> uk*	at scsibus? target ? lun ?	# SCSI unknown
> 
> fdc0	at isa? port 0x3f0 irq 6 drq 2	# standard PC floppy controllers
> #fdc1	at isa? port 0x370 irq ? drq ?
> fd*	at fdc? drive ?
> 
> wdc0	at isa? port 0x1f0 irq 14	# ST506, ESDI, and IDE controllers
> #wdc1	at isa? port 0x170 irq ?
> wd0	at wdc0 drive 0
> 
> sb0	at isa? port 0x220 irq 5 drq 1	# SoundBlaster
> 
> ep*	at pci? dev ? function ?	# 3C590 ethernet cards
> 
> spkr0	at pckbd? port 0x61		# speaker
> 
> joy0	at isa? port 0x201
> 
> pseudo-device	loop	1		# network loopback
> pseudo-device	bpfilter 16		# packet filter
> pseudo-device	sl	2		# CSLIP
> pseudo-device	ppp	2		# PPP
> #pseudo-device	tun	2		# network tunnelling over tty
> #pseudo-device	ipfilter		# ip filter
> 
> pseudo-device	pty	32		# pseudo-terminals
> pseudo-device	vnd	4		# paging to files
> 
> pseudo-device	ccd	2		# concatenated disk devices
> 
> 
> NetBSD 1.2G (SPIFF) #58: Sat Jul  5 05:00:30 CDT 1997
>     khym@dahan.metonymy.com:/usr/src.local/sys/arch/i386/compile/SPIFF
> cpu0: family 5 model 2 step c
> cpu0: Intel Pentium (P54C) (586-class)
> real mem  = 66711552
> avail mem = 60567552
> using 839 buffers containing 3436544 bytes of memory
> mainbus0 (root)
> pci0 at mainbus0 bus 0: configuration mode 1
> Intel 82439 (Triton II) TXC Host Bridge (host bridge, revision 0x03) at pci0 dev 0 function 0 not configured
> pcib0 at pci0 dev 7 function 0
> pcib0: Intel 82371SB (Triton II) PCI-ISA Bridge (rev. 0x01)
> Intel 82371SB (Triton II) IDE controller (IDE mass storage, interface 0x80) at pci0 dev 7 function 1 not configured
> ep0 at pci0 dev 10 function 0: 3Com 3C595 Ethernet
> ep0: MAC address 00:a0:24:01:de:fa
> ep0: 64KB word-wide FIFO, 3:1 Rx:Tx split, utp/100-TX default utp
> ep0: interrupting at irq 15
> ncr0 at pci0 dev 11 function 0: NCR 53c810 SCSI
> ncr0: interrupting at irq 10
> ncr0: restart (scsi reset).
> scsibus0 at ncr0: 8 targets
> sd0 at scsibus0 targ 0 lun 0: <Quantum, VP32210, L915> SCSI2 0/direct fixed
> sd0: sd0(ncr0:0:0): 10.0 MB/s (100 ns, offset 8)
> 2103MB, 4243 cyl, 8 head, 126 sec, 512 bytes/sec x 4308352 sectors
> sd1 at scsibus0 targ 1 lun 0: <Quantum, XP32150W, L915> SCSI2 0/direct fixed
> sd1: sd1(ncr0:1:0): 10.0 MB/s (100 ns, offset 8)
> 2151MB, 3907 cyl, 10 head, 112 sec, 512 bytes/sec x 4406960 sectors
> cd0 at scsibus0 targ 2 lun 0: <TOSHIBA, CD-ROM XM-5301TA, 1895> SCSI2 5/cdrom removable
> probe(ncr0:2:1): 4.0 MB/s (250 ns, offset 8)
> sd2 at scsibus0 targ 3 lun 0: <Quantum, XP34300W, L915> SCSI2 0/direct fixed
> sd2: sd2(ncr0:3:0): 10.0 MB/s (100 ns, offset 8)
> 4101MB, 3907 cyl, 20 head, 107 sec, 512 bytes/sec x 8399520 sectors
> Matrox MGA Millenium 2064W ("Storm") (VGA display, revision 0x01) at pci0 dev 12 function 0 not configured
> isa0 at pcib0
> com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
> com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
> com2 at isa0 port 0x3e8-0x3ef irq 7: ns8250 or ns16450, no fifo
> com3 at isa0 port 0x2e8-0x2ef irq 9: ns8250 or ns16450, no fifo
> sb0 at isa0 port 0x220-0x237 irq 5 drq 1: dsp v4.13
> npx0 at isa0 port 0xf0-0xff: using exception 16
> vt0 at isa0 port 0x60-0x6f irq 1: generic, 80 col, color, 8 scr, mf2-kbd, [R3.32]
> pms0 at vt0 irq 12
> spkr0 at vt0 port 0x61
> fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
> fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
> fd1 at fdc0 drive 1: 1.2MB 80 cyl, 2 head, 15 sec
> joy0 at isa0 port 0x201
> joy0: joystick not connected
> apm0 at mainbus0: Power Management spec V1.1
> apm0: A/C state: on
> apm0: battery charge state: no battery
> biomask 440 netmask 8440 ttymask 9442
> boot device: sd0
> root on sd0a dumps on sd1b
> 
> Name: Dave Huang     |   Mammal, mammal / their names are called /
> INet: khym@bga.com   |   they raise a paw / the bat, the cat /
> FurryMUCK: Dahan     |   dolphin and dog / koala bear and hog -- TMBG
> Dahan: Hani G Y+C 21 Y++ L+++ W- C++ T++ A+ E+ S++ V++ F- Q+++ P+ B+ PA+ PL++
>