Date: Wed, 20 Jan 1999 11:23:41 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Bjoern Fischer <bfischer@TechFak.Uni-Bielefeld.DE> Cc: current@FreeBSD.ORG Subject: Re: panic: vinvalbuf: dirty bufs (during reboot, several times) Message-ID: <199901201923.LAA05838@apollo.backplane.com> References: <19990120073445.A402@titan.klemm.gtn.com> <199901200700.XAA76802@apollo.backplane.com> <19990120132700.A15521@voliere.TechFak.Uni-Bielefeld.DE>
next in thread | previous in thread | raw e-mail | index | archive | help
:ok, here are some instructions which -- I hope -- reproduce it :(I haven't found a *nice* way; this is the ridiculous way): : :NFS server and client are completely 3.0-CURRENT :(of CTM src-cur.3712.gz) with Luoqi's NFS fix. The server has all :(physical) file systems mounted with softupdates except `/'. : :On the client simply edit `http://www.freebsd.org/~yokota/sc_update.txt' :... :After the vi-SEGV try to shutdown the server with `shutdown -[rh] now'. :You may shutdown the client first -- it makes no difference. :Then you will get the panic. : :Good luck. : : Bjoern Good work! I can repeat the SEGV fault. The SEGV is being caused by a bug in NFS which I haven't tracked down yet, but basically what happens is that vi tries to create a recovery file and uses lseek() to skip around a little, then seek's back and reads something it just wrote. Over NFS, this blew up -- it didn't read what it wrote. cc x.c -o x cd somewhere ( into NFS partition on NFS client ) ./x | hexdump cd localfilesystem /path/x | hexdump I do not know if this related to the non-NFS panic. When I find the bug, we'll know better. This should be easy. -Matt #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> char buf[4096]; int main(int ac, char **av) { int fd = open("test", O_RDWR|O_CREAT|O_TRUNC, 0666); int n; memset(buf, 1, 4096); write(fd, buf, 1024); lseek(fd, 0x800, 0); write(fd, buf, 1024); lseek(fd, 0xC00, 0); write(fd, buf, 1024); lseek(fd, 0x1000, 0); write(fd, buf, 1024); lseek(fd, 0x1400, 0); write(fd, buf, 1024); lseek(fd, 0x1800, 0); write(fd, buf, 1024); lseek(fd, 0x800, 0); read(fd, buf, 1024); write(1, buf, 1024); return(0); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901201923.LAA05838>