From owner-freebsd-hackers@FreeBSD.ORG Wed Nov 19 20:18:11 2014 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F2BB81E6 for ; Wed, 19 Nov 2014 20:18:11 +0000 (UTC) Received: from mho-02-ewr.mailhop.org (mho-02-ewr.mailhop.org [204.13.248.72]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C754EDAC for ; Wed, 19 Nov 2014 20:18:11 +0000 (UTC) Received: from [73.34.117.227] (helo=ilsoft.org) by mho-02-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1XrBha-000CGV-Fg; Wed, 19 Nov 2014 20:18:10 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by ilsoft.org (8.14.9/8.14.9) with ESMTP id sAJKI9dE009060; Wed, 19 Nov 2014 13:18:09 -0700 (MST) (envelope-from ian@FreeBSD.org) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 73.34.117.227 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX18bvxzFvzWc9DgHKtRrM65i X-Authentication-Warning: paranoia.hippie.lan: Host revolution.hippie.lan [172.22.42.240] claimed to be [172.22.42.240] Subject: Re: Running 8 building 10 gives "Out of file descriptors" ? From: Ian Lepore To: Dieter BSD In-Reply-To: References: Content-Type: text/plain; charset="us-ascii" Date: Wed, 19 Nov 2014 13:18:08 -0700 Message-ID: <1416428288.1147.140.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: freebsd-hackers@freebsd.org X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Nov 2014 20:18:12 -0000 On Wed, 2014-11-19 at 11:07 -0800, Dieter BSD wrote: > if (fd < 10) { > fd2 = fcntl(fd, F_DUPFD_CLOEXEC, 10); > close(fd); > if (fd2 < 0) > { > int limit; > limit = getdtablesize(); > fprintf(stderr, "sh: setinputfile(): fcntl() returned %d ge\ > tdtablesize() returned %d\n", fd2, limit); > perror("sh: fcntl(F_DUPFD_CLOEXEC) failed:"); > error("sh: Out of file descriptors?"); > } > fd = fd2; > } > > Result: > sh: setinputfile(): fcntl() returned -1 getdtablesize() returned 11095 > sh: fcntl(F_DUPFD_CLOEXEC) failed:: Invalid argument > sh: Out of file descriptors? > > find /usr/include/ | xargs grep F_DUPFD_CLOEXEC > gives no hits in 8.2, but > /usr/include/sys/fcntl.h: > /new/freebsd/usr/include/fcntl.h: > #define F_DUPFD_CLOEXEC 17 /* Like F_DUPFD, but FD_CLOEXEC is set */ > in 10.1 > > So, F_DUPFD_CLOEXEC was added after 8.2, and someone changed sh to > use it, but couldn't be bothered to fix the error message. > > If someone would like to fix this, they don't need to build a toolchain, > they can use a 2 line script: > > #!/bin/sh > echo Hello, World! > > So Ian, how did you avoid running into this problem? Ohhhh... hmm. That must have been MFC'd to 8-stable after I had updated my 8.2 to 8.4 (which was quite a while ago, more than a year now I guess). I think this means it's no longer possible to bootstrap a system older than 8.4 in a single step. You'd need to go 8.2 -> 8.4 then install that and reboot to go forward from there. I'm not sure there's an easy fix for that, but we could at least update the check in Makefile.inc1 to stop the build and tell you that you can't bootstrap a system older than 8.4 (right now the cutoff check is 8.0). I'm not sure what the project policy is in terms of fixing this (no matter how hard it may be) versus changing the cutoff warning. I'll look into it. -- Ian