From owner-freebsd-gnome Tue Aug 6 16:12: 7 2002 Delivered-To: freebsd-gnome@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DA4D337B400 for ; Tue, 6 Aug 2002 16:12:04 -0700 (PDT) Received: from creme-brulee.marcuscom.com (rdu57-17-158.nc.rr.com [66.57.17.158]) by mx1.FreeBSD.org (Postfix) with ESMTP id D7B3743E42 for ; Tue, 6 Aug 2002 16:12:03 -0700 (PDT) (envelope-from marcus@marcuscom.com) Received: from [10.2.1.0] (vpn-client-0.marcuscom.com [10.2.1.0]) by creme-brulee.marcuscom.com (8.12.5/8.12.5) with ESMTP id g76NBWEF023562; Tue, 6 Aug 2002 19:11:32 -0400 (EDT) (envelope-from marcus@marcuscom.com) Subject: Re: GDM 2.4.0.x & FreeBSD From: Joe Marcus Clarke To: George Cc: gnome@FreeBSD.ORG In-Reply-To: <20020731170330.GB20594@monique.linux.bogus> References: <20020715225248.GI19585@monique.linux.bogus> <20020729222247.E308-100000@shumai.marcuscom.com> <20020731170330.GB20594@monique.linux.bogus> Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Mailer: Ximian Evolution 1.0.8 Date: 06 Aug 2002 19:11:16 -0400 Message-Id: <1028675476.690.61.camel@gyros.marcuscom.com> Mime-Version: 1.0 Sender: owner-freebsd-gnome@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Wed, 2002-07-31 at 13:03, George wrote: > On Mon, Jul 29, 2002 at 10:25:09PM -0400, Joe Marcus Clarke wrote: > > George, I just pulled down your latest diffs from CVS, but the problem > > with gdm from /etc/ttys. I'm still getting the EBADF from slave.c at > > lines 1495 and 1500. > > I suppose these are the dup2 lines. Hmmm, this is very weird, I can't see > why it wouldn't be possible to dup into stdin and stdout. Perhaps the > solution may be to not use stdin and stdout in this case (it's not neccessary > really, it's just the original design of the beast). > > can you try to change this to: > > if (pipe1[1] != STDOUT_FILENO) { > close (STDOUT_FILENO); > dup2 (pipe1[1], STDOUT_FILENO); > close (pipe1[1]); > } > > if (pipe2[0] != STDIN_FILENO) { > close (STDIN_FILENO); > dup2 (pipe2[0], STDIN_FILENO); > close (pipe2[0]); > } > > (Note those if's are just an anality and something I'll get rid of later, > they will always trigger) > > Perhaps we can't dup into those original fd's, though dup2 should do the > close for us. I tried your new file descriptor patch to slave.c, and this made things worse. Now, gdm doesn't even start. It continues to start, die, and restart, until it does so enough times, then the display is disabled. To fix this, I took out the two lines that closed the child end of the pipes (lines 1507 and 1508). On FreeBSD, if one end of a pipe is closed, the pipe is considered widowed, and the process gets hit with a SIGPIPE. From FreeBSD's pipe(2) manpage: "A pipe that has had an end closed is considered widowed. Writing on such a pipe causes the writing process to receive a SIGPIPE signal. Widowing a pipe is the only way to deliver end-of-file to a reader: after the reader consumes any buffered data, reading a widowed pipe returns a zero count. The bidirectional nature of this implementation of pipes is not portable to older systems, so it is recommended to use the convention for using the endpoints in the traditional manner when using a pipe in one direc- tion." However, even after removing the close calls, the problem with the unusable Username field remains. The file descriptor numbers for the pipe ends remain constant at 9 for out and 10 for in. This is true even if gdm is started manually without the --nodaemon option. Joe > > George > > -- > George > If the facts don't fit the theory, change the facts. > -- Albert Einstein > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-gnome" in the body of the message > -- PGP Key : http://www.marcuscom.com/pgp.asc To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-gnome" in the body of the message