Current-Users archive

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

Re: NFS server panic on OpenBSD diskless client shutdown



On Fri, 3 Aug 2012, David Holland wrote:

On Thu, Aug 02, 2012 at 10:57:28PM -0500, John D. Baker wrote:
VOP_ABORTOP(0,da64ea08,c1e99b00,d,0,da64ea24,da64eb68,da64ea34,da64ea3c,0) at 
VOP_ABORTOP+0x1a
nfsrv_rename(c5357cf8,c1e99b00,c2246800,da64eb68,0,0,0,da64ec30,0,1) at 
nfsrv_rename+0x749

so, it's calling VOP_ABORTOP on a null vnode.

printfs, or building a -g kernel and using the debug info to get a
source line number for the offset to call site.

I built a kernel with 'makeoptions DEBUG="-g"', installed it, rebooted,
repeated the crash.  The crashdump indicates no address shifts.  Loading
the "netbsd.gdb" file shows the following:

(gdb) list *nfsrv_rename+0x749
0xc03a92ea is in nfsrv_rename (/d0/nbsd/netbsd-6/src/sys/nfs/nfs_serv.c:2143).
2128    #ifdef notdef
2129            if (tdirp)
2130                    vrele(tdirp);
2131    #endif
2132            if (tond.ni_cnd.cn_nameiop) {
2133                    if (tond.ni_pathbuf != NULL) {
2134                            pathbuf_destroy(tond.ni_pathbuf);
2135                            tond.ni_pathbuf = NULL;
2136                    }
2137            }
2138            if (localfs) {
2139                    VFS_RENAMELOCK_EXIT(localfs);
2140            }
2141            if (fromnd.ni_cnd.cn_nameiop) {
2142                    VOP_ABORTOP(fromnd.ni_dvp, &fromnd.ni_cnd);
2143                    if (fromnd.ni_pathbuf != NULL) {
2144                            pathbuf_destroy(fromnd.ni_pathbuf);
2145                            fromnd.ni_pathbuf = NULL;
2146                    }
2147                    vrele(fromnd.ni_dvp);
2148                    vrele(fvp);
2149            }
2150            return (error);
2151    }
2152 2153 /*
2154     * nfs link service
2155     */
2156    int
2157    nfsrv_link(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, struct 
lwp *lwp, struct mbuf **mrq)
(gdb)

(I used "list -" to back up and give more than gdb's usual 10 lines of
context. I removed the intermediate prompts from the output.)

--
|/"\ John D. Baker, KN5UKS               NetBSD     Darwin/MacOS X
|\ / jdbaker[snail]mylinuxisp[flyspeck]com    OpenBSD            FreeBSD
| X  No HTML/proprietary data in email.   BSD just sits there and works!
|/ \ GPGkeyID:  D703 4A7E 479F 63F8 D3F4  BD99 9572 8F23 E4AD 1645


Home | Main Index | Thread Index | Old Index