From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?=E7=99=BD=E4=BA=95=E5=BD=B0?= Newsgroups: gmane.emacs.bugs Subject: bug#20555: Emacs 24.2 vs 24.4 on Solaris: M-x shell and "tty => not a tty" Date: Wed, 3 Jun 2015 01:45:21 +0900 Message-ID: References: <555198E2.30809@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\)) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1433263742 8087 80.91.229.3 (2 Jun 2015 16:49:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 2 Jun 2015 16:49:02 +0000 (UTC) Cc: Akira Shirai To: 20555@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Jun 02 18:48:51 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YzpMh-0007OL-OH for geb-bug-gnu-emacs@m.gmane.org; Tue, 02 Jun 2015 18:48:36 +0200 Original-Received: from localhost ([::1]:59945 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YzpMh-0005AN-8E for geb-bug-gnu-emacs@m.gmane.org; Tue, 02 Jun 2015 12:48:35 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45785) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YzpKI-0000p5-Uh for bug-gnu-emacs@gnu.org; Tue, 02 Jun 2015 12:46:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YzpKE-00068L-Re for bug-gnu-emacs@gnu.org; Tue, 02 Jun 2015 12:46:06 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:56085) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YzpKE-00068H-OO for bug-gnu-emacs@gnu.org; Tue, 02 Jun 2015 12:46:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YzpKE-0005oD-IC for bug-gnu-emacs@gnu.org; Tue, 02 Jun 2015 12:46:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: <555198E2.30809@cs.ucla.edu> Resent-From: =?UTF-8?Q?=E7=99=BD=E4=BA=95=E5=BD=B0?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jun 2015 16:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20555 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 20555-submit@debbugs.gnu.org id=B20555.143326353422294 (code B ref 20555); Tue, 02 Jun 2015 16:46:02 +0000 Original-Received: (at 20555) by debbugs.gnu.org; 2 Jun 2015 16:45:34 +0000 Original-Received: from localhost ([127.0.0.1]:37827 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YzpJl-0005nV-5j for submit@debbugs.gnu.org; Tue, 02 Jun 2015 12:45:33 -0400 Original-Received: from mail-pa0-f51.google.com ([209.85.220.51]:36495) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YzpJi-0005nH-Sf for 20555@debbugs.gnu.org; Tue, 02 Jun 2015 12:45:31 -0400 Original-Received: by pabqy3 with SMTP id qy3so16066679pab.3 for <20555@debbugs.gnu.org>; Tue, 02 Jun 2015 09:45:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:content-type:content-transfer-encoding:subject:date:message-id :cc:to:mime-version; bh=kZgW+FycWiT4Gn1cJA9sDBY8Sq2MY1X+/WpbsIhEWCU=; b=N24dHu582fb0Sr7okHY0jcavWUF696tLvBCljsDyiMxYmUTnTwzKgjfy9R7pM0eISg BTZYSJLiV8o6ijAzFk5XYHFlyjuIuPXhScl842sVtMxJSrFfsM+DCOgS1CK7E+gNZBwM OM3epjZhlpcPsLXhMG9ss5Xz7rV5Rj+DWA+nelqM5zikmGVNm2SewVsqazLuHzU17hbb erUMEsTcDfUyKt25t96mYT54r+AAp4uOQ6r+EAwqFcnNF/rArxUruKIxxg1oY8HBSEiL HKoCuAzgthER1jZhXJ41k410Eh+9avyfBlSu/wyx8hvE8FcDo9kfPG42uG3VlOfBENbf CXJw== X-Received: by 10.66.168.105 with SMTP id zv9mr51429553pab.121.1433263524926; Tue, 02 Jun 2015 09:45:24 -0700 (PDT) Original-Received: from [172.20.10.11] (pw126253104007.6.panda-world.ne.jp. [126.253.104.7]) by mx.google.com with ESMTPSA id pd10sm18333426pdb.66.2015.06.02.09.45.21 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 02 Jun 2015 09:45:23 -0700 (PDT) X-Mailer: Apple Mail (2.2098) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:103497 Archived-At: Today I found the same problem on Ruby: | grantpt() doesn't work with CLOEXEC on Solaris 10 | = http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=3D33519&view=3Drevisi= on They say that Solaris grantpt() internally uses a setuid root program /usr/lib/pt_chmod which receives an fd and calls ptsname(), chown(), and chmod(). If FD_CLOEXEC is set for the fd, the fd passed for /usr/lib/pt_chmod is already closed and /usr/lib/pt_chmod does not work. The following is their fix for the problem: % gzcat ruby-2.2.2.tar.gz | tar tvf - | grep ruby-2.2.2/ext/pty/pty.c -rw-r--r-- 1044/1044 22152 Nov 15 20:49 2014 ruby-2.2.2/ext/pty/pty.c % cat -n ruby-2.2.2/ext/pty/pty.c | sed -n = '221,223p;234,256p;330,341p;450p' 221 static int 222 get_device_once(int *master, int *slave, char = SlaveName[DEVICELEN], int nomesg, int fail) 223 { 234 #if defined(__sun) || (defined(__FreeBSD__) && __FreeBSD_version = < 902000) 235 /* workaround for Solaris 10: grantpt() doesn't work if = FD_CLOEXEC is set. [ruby-dev:44688] */ 236 /* FreeBSD 9.2 or later supports O_CLOEXEC 237 * http://www.freebsd.org/cgi/query-pr.cgi?pr=3D162374 */ 238 if ((masterfd =3D posix_openpt(O_RDWR|O_NOCTTY)) =3D=3D -1) = goto error; 239 if (sigaction(SIGCHLD, &dfl, &old) =3D=3D -1) goto error; 240 if (grantpt(masterfd) =3D=3D -1) goto grantpt_error; 241 rb_fd_fix_cloexec(masterfd); 242 #else 243 { 244 int flags =3D O_RDWR|O_NOCTTY; 245 # if defined(O_CLOEXEC) 246 /* glibc posix_openpt() in GNU/Linux calls = open("/dev/ptmx", flags) internally. 247 * So version dependency on GNU/Linux is same as = O_CLOEXEC with open(). 248 * O_CLOEXEC is available since Linux 2.6.23. Linux = 2.6.18 silently ignore it. */ 249 flags |=3D O_CLOEXEC; 250 # endif 251 if ((masterfd =3D posix_openpt(flags)) =3D=3D -1) goto = error; 252 } 253 rb_fd_fix_cloexec(masterfd); 254 if (sigaction(SIGCHLD, &dfl, &old) =3D=3D -1) goto error; 255 if (grantpt(masterfd) =3D=3D -1) goto grantpt_error; 256 #endif 330 #if defined(__sun) 331 /* workaround for Solaris 10: grantpt() doesn't work if = FD_CLOEXEC is set. [ruby-dev:44688] */ 332 if((masterfd =3D open("/dev/ptmx", O_RDWR, 0)) =3D=3D -1) = goto error; 333 s =3D signal(SIGCHLD, SIG_DFL); 334 if(grantpt(masterfd) =3D=3D -1) goto error; 335 rb_fd_fix_cloexec(masterfd); 336 #else 337 if((masterfd =3D rb_cloexec_open("/dev/ptmx", O_RDWR, 0)) =3D=3D= -1) goto error; 338 rb_update_max_fd(masterfd); 339 s =3D signal(SIGCHLD, SIG_DFL); 340 if(grantpt(masterfd) =3D=3D -1) goto error; 341 #endif 450 }