From owner-cvs-src@FreeBSD.ORG Wed May 28 00:46:09 2003 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8AEFC37B401; Wed, 28 May 2003 00:46:09 -0700 (PDT) Received: from out003.verizon.net (out003pub.verizon.net [206.46.170.103]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2EAB743F85; Wed, 28 May 2003 00:46:08 -0700 (PDT) (envelope-from mtm@identd.net) Received: from kokeb.ambesa.net ([151.200.236.15]) by out003.verizon.net (InterMail vM.5.01.05.33 201-253-122-126-133-20030313) with ESMTP id <20030528074607.PASI4805.out003.verizon.net@kokeb.ambesa.net>; Wed, 28 May 2003 02:46:07 -0500 Date: Wed, 28 May 2003 03:46:06 -0400 From: Mike Makonnen To: Alexander Kabaev In-Reply-To: <20030527185552.258336eb.ak03@gte.com> References: <20030527214357.CE12C37B48F@hub.freebsd.org> <20030527150907.A6683@root.org> <20030527223325.PAUX28930.out004.verizon.net@kokeb.ambesa.net> <20030527185552.258336eb.ak03@gte.com> X-Mailer: Sylpheed version 0.8.10 (GTK+ 1.2.10; i386-portbld-freebsd5.0) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Authentication-Info: Submitted using SMTP AUTH at out003.verizon.net from [151.200.236.15] at Wed, 28 May 2003 02:46:06 -0500 Message-Id: <20030528074607.PASI4805.out003.verizon.net@kokeb.ambesa.net> cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: "Daniel C.Sobral" cc: Julian Elischer cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/lib/libthr/thread thr_join.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 May 2003 07:46:10 -0000 On Tue, 27 May 2003 18:55:52 -0400 Alexander Kabaev wrote: > > konsole has similar problems when run with libkse. The ktrace + source > code inspection convinced me that it simply abort()'a itself, because > ttyname() function returns NULL in makePty() function. Yes, seems like it. More comments below. > > I do not think either threading library has anything to do with the > failure. It doesn't look like it's a threading issue, but since libc_r doesn't bring out this behaviour in Konsole, they must be doing (or not doing) something (directly or indirectly) that triggers it. I have finally taken the plunge and installed KDE, and I can reproduce the bug. However, it is unclear to me exactly what the problem is. To complicate things even further it doesn't even look look Konsole uses threads, and instead plays games with fork(2). I think we need someone who is familiar with the code to help out because I am having a hard time following it. Just to add a couple of data points: It crashes because tcgetattr(3) called from libc/ttyname_unthreaded() returns ENOTTY to TEPty::makePty(). When it does crash it is also usually preceded by: konsole: cannot chown /dev/ttypc. Reason: Operation not permitted which is as a result of this code snippet from TEPty.cpp:openPty() if (openpty(&master_fd, &slave_fd, NULL, NULL, NULL) == 0) { m_MasterFd = master_fd; m_SlaveFd = slave_fd; #ifdef HAVE_PTSNAME strncpy(ptynam, ptsname(master_fd), 50); ... [snip] ... if (fchown(slave_fd, (uid_t) -1, gid) < 0) { m_bNeedGrantPty = true; fprintf(stderr,"konsole: cannot chown %s.\n",ttynam); perror("Reason"); } The fact that it works sometimes and abort()s at others suggests that there may be a race somewhere, but where... Cheers. -- Mike Makonnen | GPG-KEY: http://www.identd.net/~mtm/mtm.asc mtm@identd.net | D228 1A6F C64E 120A A1C9 A3AA DAE1 E2AF DBCC 68B9 mtm@FreeBSD.Org| FreeBSD - The Power To Serve