Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Sep 1998 04:49:22 -0700
From:      Don Lewis <Don.Lewis@tsc.tdk.com>
To:        Alexander Litvin <archer@lucky.net>, Luoqi Chen <luoqi@watermarkgroup.com>
Cc:        current@FreeBSD.ORG
Subject:   Re: deadlock in vm_fault()
Message-ID:  <199809241149.EAA24754@salsa.gv.tsc.tdk.com>
In-Reply-To: Alexander Litvin <archer@lucky.net> "Re: deadlock in vm_fault()" (Sep 24,  1:05pm)

next in thread | previous in thread | raw e-mail | index | archive | help
On Sep 24,  1:05pm, Alexander Litvin wrote:
} Subject: Re: deadlock in vm_fault()
} In article <199809232224.SAA17260@lor.watermarkgroup.com> you wrote:
} LC> I ran into a deadlock in vm_fault code today while making -j12 world.
} LC> It's caused by a reversed lock acquisition order. The normal order of
} LC> acquisition is vm map lock first and vnode lock next (if the fault is in
} LC> a vnode backed object). During the course of the fault handling, lock on
} LC> the vm map is released prior to paging io and has to be reacquired if it's
} LC> modified by another process during the io. Before reacquiring the lock of
} LC> vm map, we have to release the vnode lock we still hold, otherwise another
} LC> page fault in the same map/vnode would send us into a deadlock.
} 
} LC> Attached is a fix for this problem. Would any of the vm/lock experts out
} LC> there review this? Thanks.
} 
} I've seen something strange during the same -j12 buildworld. In fact,
} it was just that ld hang, apparently not doing anything. The rest
} of the system seemed to be alive. Though in some 3 or 4 hours machine
} rebooted (it had kernel with broken crash dump generation, so I do
} not know what actually happened).
} 
} May it be related?

Sounds likely.

I've seen something else with -j12 (but not -j11 or lower).  I don't have
any particular reason to suspect the kernel on this one, but it is an
interesting coincidence.

--- config_h.sh ---
cp -p /usr/src/gnu/usr.bin/perl/suidperl/../../../../contrib/perl5/config_h.SH config_h.sh
--- config.sh ---
cp -p /usr/src/gnu/usr.bin/perl/suidperl/../libperl/config.SH-elf.i386 config.sh
--- cflags.sh ---
cp -p /usr/src/gnu/usr.bin/perl/suidperl/../../../../contrib/perl5/cflags.SH cflags.sh
--- writemain.sh ---
--- myconfig ---
--- writemain ---
sh writemain.sh
Extracting writemain (with variable substitutions)
writemain: not found
*** Error code 127
1 error
*** Error code 2
1 error
*** Error code 2


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?199809241149.EAA24754>