Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Feb 2003 11:09:13 -0800 (PST)
From:      Ed Alley <alley1@llnl.gov>
To:        freebsd-hackers@freebsd.org
Subject:   Some advice in analyzing vfs crashes
Message-ID:  <200302211909.h1LJ9Doc036666@jordan.llnl.gov>

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

I am looking for advice:

	I am developing a file system (it can exist as a module or compiled in).

	A problem has developed which I do not know how to debug and would like
        some advice.

	The symptoms:
		I can mount my FS read from it, write into and out of it and unmount
	it. However, it is subject to periodic page-faults. These can happen while
	the FS is mounted, or after it has been dismounted (even for a while).
	The page-fault occurs at random and doesn't depend on whether I reference
	the FS or not. When I look at the core dump, I see that it occurs in
	the VFS usually after an open, say ufs_open(), and often in vn_isdisk().
	When I look at the arguments to these calls, I see *vp = 0 or a bad address.

	Clearly my FS has corrupted a vnode, or the buffer cache.

	(Maybe some vnodes are still locked or referenced, or corrupted? or some
	 buffer blocks are corrupted or not released?)

	So I'm thinking to do the following:

		1. Mount my FS, cd into it and do the following:

			cp /etc/passwd .
			rm *
			cd /
			umount /mnt

		2. panic the system to get a core dump.
			This could be done, say, by putting the panic(9) call
			in my vfs unmount() function before the return.

	My questions:

	   Is there a way to analyize a core dump with gdb(1) and detect:

	      	a) corrupted vnodes?
		b) locked/referenced vnodes (that should have been released)?
		c) corrupted buffer cache?
		d) locked buffer blocks (that should have been released)?

	   In other words, I want evaluate the state of the vfs after my
	   FS has done its damage, but before the inevitable panic occurs.

	   Any further hints on what I should look at would be greatly appreciated.

			Thank-you
			Ed Alley
			

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




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