Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Nov 1999 23:59:46 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        "David E. Cross" <crossd@cs.rpi.edu>
Cc:        Doug White <dwhite@resnet.uoregon.edu>, "David E. Cross" <crossd@cs.rpi.edu>, freebsd-hackers@FreeBSD.ORG, crossd@cs.rpi.edu
Subject:   Re: vmpfw in pine via NFS 
Message-ID:  <199911180759.XAA78788@apollo.backplane.com>
References:   <199911161847.NAA07576@cs.rpi.edu>

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

:> :
:> 
:>     Which FreeBSD release is being used here?  What kind of NFS mount is 
:>     being used (localhost mount?) 
:
:Ok, I have some additional details, as I was able to mostly resolve the issue.
:
:Yes, mail is nfs exported, but that does not appear to be the issue in this
:case.  pine is run from nfs mounted "/usr/local" pine would hang every time
:a user would go to send a composed message and wind up in "vmpfw".  The "fix"
:was to go to the NFS server for /usr/local and do "mv pine pine.old; cp 
:pine.old pine".  This would (obviously) not affect any of the old pine's, it
:would however allow any new pines to run w/o problems.  Note that any access
:to /usr/local/bin/pine.old on the client machine would result in a hang.
:Specifically "file /usr/local/bin/pine.old" resulted in "vmpfw" as did "cmp"
:and a couple of others.  All of these worked just fine on the NFS server.
:The release in question is 3.3-STABLE from this past Friday (Nov. 12).
:
:--
:David Cross                               | email: crossd@cs.rpi.edu 

    pine does some really *bad* things with mmap(), as I recall.  I'm trying
    to remember what the bug was.  

    The thing to do is to run a debug kernel, and when you hit the problem
    do a 'ps axl' and locate all the processes that are 'stuck' in a state
    that they shouldn't be stuck in.  It's almost certainly a deadlock 
    somewhere.  There should be more then one.  Once you have identified
    the processes you can gdb the running kernel and get a backtrace of
    each stuck process:

	gdb -k kernel.debug /dev/mem
	proc XXX
	back
	proc YYY
	back
	...

    I think the problem is related to pine's use of MAP_PRIVATE mmap's of
    mail files, and then going through and modifying every page as it
    scans the map.  This causes a large number of write faults to occur and
    even though the copy-on-write's are creating private pages, vm_fault
    still winds up locking the underlying file.  This can cause a deadlock
    to occur somewhere - I'm not exactly sure where. 

    I recall that there are some VM-related situations where NFS can get
    into a deadlock due to side effects, but I don't recall it well enough
    to figure it out without some backtraces to work with.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>



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?199911180759.XAA78788>