From owner-freebsd-hackers@FreeBSD.ORG Fri Apr 23 14:40:37 2010 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 03403106564A; Fri, 23 Apr 2010 14:40:37 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay04.stack.nl [IPv6:2001:610:1108:5010::107]) by mx1.freebsd.org (Postfix) with ESMTP id BF44E8FC17; Fri, 23 Apr 2010 14:40:36 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id 2AF6C1DD658; Fri, 23 Apr 2010 16:40:36 +0200 (CEST) Received: by turtle.stack.nl (Postfix, from userid 1677) id 15CAC17525; Fri, 23 Apr 2010 16:40:36 +0200 (CEST) Date: Fri, 23 Apr 2010 16:40:36 +0200 From: Jilles Tjoelker To: freebsd-hackers@freebsd.org, gabor@freebsd.org Message-ID: <20100423144035.GB41934@stack.nl> References: <20100423141735.GA41934@stack.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100423141735.GA41934@stack.nl> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: Subject: Re: libc NLS, NFS mounted /usr/local, DHCP, no default route causes hangs X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Apr 2010 14:40:37 -0000 On Fri, Apr 23, 2010 at 04:17:36PM +0200, Jilles Tjoelker wrote: > The changes to use NLS for strerror sometimes cause one of my virtual > machines to deadlock. This virtual machine runs 9-CURRENT, acquires its > IP address via DHCP (virtualbox host-only networking), has no default > route and has /usr/local and /usr/home NFS mounted. > When the DHCP lease expires such as by resetting the date after a VM > save&restore, one of the route(8) commands executed by > dhclient-script(8) fails and calls strerror(3). Following the default > NLSPATH, catopen(3) looks in /usr/share/nls first; because the catalog > is not there it then tries in /usr/local/share/nls which deadlocks > because the network is not available. > I currently use the attached patch which returns failure on any attempt > to open a catalog for language "C", but I think this is not correct. > Am I using a configuration that is not supposed to work (NFS mounted > /usr/local with DHCP in particular), or should this be fixed in some > other way? The patch: Index: lib/libc/nls/msgcat.c =================================================================== --- lib/libc/nls/msgcat.c (revision 206760) +++ lib/libc/nls/msgcat.c (working copy) @@ -138,6 +138,9 @@ lang = "C"; } + if (strcmp(lang, "C") == 0) + NLRETERR(ENOENT); + /* Try to get it from the cache first */ RLOCK(NLERR); SLIST_FOREACH(np, &cache, list) { -- Jilles Tjoelker