Skip site navigation (1)Skip section navigation (2)
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>