Subject: panic: kernel fault
To: None <current-users@NetBSD.ORG>
From: der Mouse <mouse@Collatz.McRCIM.McGill.EDU>
List: current-users
Date: 07/18/1995 11:07:59
A few days ago, a few of you may recall, I sent a note here about
getting panics when running ps, with a call stack looking like

	_mem_access_fault+0x27c:	call	_panic
	_trapbase+0x23fc:		call	_mem_access_fault
	_trapbase+0x270c:		call	_syscall
	_swread+0x1c:			call	_physio
	_spec_read+0xd4:		jmpl	%o3, %o7
	_ufsspec_read+0x34:		jmpl	%o1, %o7
	_vn_read+0xb8:			jmpl	%o1, %o7
	_read+0xc0:			jmpl	%o3, %o7
	_syscall+0x1ec:			jmpl	%o3, %o7
	_trapbase+0x270c:		call	_syscall

A little UTSLing makes it clear what's going on here.  swread(), the
read routine for the swap-space driver (in vm/vm_swap.c), reads

int
swread(dev, uio)
	dev_t dev;
	struct uio *uio;
{

	return (physio(swstrategy, NULL, B_READ, minphys, uio));
}

But when I look at physio() (sys/kern_physio.c), it starts

int
physio(strategy, bp, dev, flags, minphys, uio)
	int (*strategy)(); 
	struct buf *bp;
	dev_t dev;
	int flags;
	u_int (*minphys)();
	struct uio *uio;
{

Can you say "argument mismatch"?  Sure you can! :-)

This probably has something to do with the recent changes to physio and
friends, but I don't feel I know enough about them to be sure of doing
the right thing.  This source is from a sup a few days old; I'm doing a
new sup now, but it's producing "SUP: Can't connect to server for
supfilesrv: Connection timed out".  If and when I manage to get a fresh
sup, I'll see if this has been fixed; if not, or if sup doesn't manage
to connect soon, I'll probably dive in, machete in hand, and see if I
can at least make it stop panicking.

In the meantime: reading from /dev/drum is liable to panic the system,
so use the c option to ps if there's any chance one of your processes
has been swapped. :-(  (Or else symlink /dev/drum to /dev/null, which I
found helped, though I'm sure I lost some functionality.)

Unless of course your kernel is old (or new, if this has been fixed)
enough that this mismatch is not present....

					der Mouse

			    mouse@collatz.mcrcim.mcgill.edu