From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ken Brown Newsgroups: gmane.emacs.bugs Subject: bug#14569: 24.3.50; bootstrap fails on Cygwin Date: Mon, 01 Jul 2013 12:16:25 -0400 Message-ID: <51D1AB59.90808@cornell.edu> References: <51BC720D.7080504@alice.it> <51BDB979.3040508@cornell.edu> <20130616150141.GB3622@ednor.casa.cgf.cx> <51BDFB25.8080101@cornell.edu> <51BE01EC.3000701@cornell.edu> <51C60DEB.8030804@alice.it> <51C75149.1070609@alice.it> <51C793FA.9070806@cs.ucla.edu> <51C8275A.4080307@cornell.edu> <51C886D5.3030704@alice.it> <51C8B4AD.7050609@cs.ucla.edu> <51C8DB3A.7050206@alice.it> <51CC529B.9090809@cs.ucla.edu> <51CC9340.3080307@cornell.edu> <51CD7F92.40007@cornell.edu> <51CDA2A0.10400@cs.ucla.edu> <51CDABD3.4070207@cornell.edu> <51CE02D6.1010702@cornell.edu> <51D16635.5080609@cornell.edu> <51D18FEF.7040602@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1372695555 12513 80.91.229.3 (1 Jul 2013 16:19:15 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 1 Jul 2013 16:19:15 +0000 (UTC) Cc: "14569@debbugs.gnu.org" <14569@debbugs.gnu.org>, Angelo Graziosi To: Paul Eggert Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Jul 01 18:19:15 2013 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 1Utgoq-0000yB-9T for geb-bug-gnu-emacs@m.gmane.org; Mon, 01 Jul 2013 18:19:12 +0200 Original-Received: from localhost ([::1]:39237 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Utgop-0003gZ-Kj for geb-bug-gnu-emacs@m.gmane.org; Mon, 01 Jul 2013 12:19:11 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:53722) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Utgoj-0003gR-MJ for bug-gnu-emacs@gnu.org; Mon, 01 Jul 2013 12:19:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Utgoh-0000GS-5E for bug-gnu-emacs@gnu.org; Mon, 01 Jul 2013 12:19:05 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:56234) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Utgoh-0000GD-0R for bug-gnu-emacs@gnu.org; Mon, 01 Jul 2013 12:19:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Utgog-0008WO-0A for bug-gnu-emacs@gnu.org; Mon, 01 Jul 2013 12:19:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ken Brown Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Jul 2013 16:19:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 14569 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 14569-submit@debbugs.gnu.org id=B14569.137269548532641 (code B ref 14569); Mon, 01 Jul 2013 16:19:01 +0000 Original-Received: (at 14569) by debbugs.gnu.org; 1 Jul 2013 16:18:05 +0000 Original-Received: from localhost ([127.0.0.1]:50550 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Utgnk-0008UJ-1g for submit@debbugs.gnu.org; Mon, 01 Jul 2013 12:18:05 -0400 Original-Received: from limerock01.mail.cornell.edu ([128.84.12.99]:35439) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Utgng-0008Tk-O1 for 14569@debbugs.gnu.org; Mon, 01 Jul 2013 12:18:02 -0400 X-CornellRouted: This message has been Routed already. Original-Received: from authusersmtp.mail.cornell.edu (granite4.serverfarm.cornell.edu [10.16.197.9]) by limerock01.mail.cornell.edu (8.14.4/8.14.4_cu) with ESMTP id r61GGUTB028127; Mon, 1 Jul 2013 12:16:33 -0400 Original-Received: from [192.168.1.6] (cpe-67-249-194-47.twcny.res.rr.com [67.249.194.47]) (authenticated bits=0) by authusersmtp.mail.cornell.edu (8.14.4/8.12.10) with ESMTP id r61GGUHO020815 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 1 Jul 2013 12:16:30 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 In-Reply-To: <51D18FEF.7040602@cs.ucla.edu> 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:75765 Archived-At: On 7/1/2013 10:19 AM, Paul Eggert wrote: > On 07/01/2013 04:21 AM, Ken Brown wrote: >> >> Last night I began running a loop in which emacs (patched as I proposed) repeatedly starts and then >> exits after 15 seconds [*]. So far there hasn't been a single failure after more than 1300 iterations. > > I wouldn't expect your test case to exercise the bug. > The bug occurs when Gtk or Glib activity is occurring > in some other thread at the same time that Emacs is > running. To reproduce the bug, one must have a > race condition like that. In your test case Emacs > is idle, so it's unlikely to exhibit the bug. > > A couple more things. Since the bug comes into play > only when glib is tickled, shouldn't the Cygwin case > suppress only the tickling, not the catching of child > signals? > > Also, wouldn't it be better to give Cygwin maintainers > an easy way to reproduce the bug, say by compiling > with a special flag? > > So, how about the following patch instead? > > === modified file 'src/ChangeLog' > --- src/ChangeLog 2013-06-30 22:29:23 +0000 > +++ src/ChangeLog 2013-07-01 14:17:45 +0000 > @@ -1,3 +1,10 @@ > +2013-07-01 Paul Eggert > + > + Tickle glib when debugging under Cygwin (Bug#14569). > + * process.c (init_process_emacs) [CYGWIN && TICKLE_GLIB_BUGFIX]: > + Tickle glib in this case, too, so that Cygwin maintainers > + can reproduce the bug more easily. > + > 2013-06-30 Michal Nazarewicz > > * buffer.c (FKill_buffer): Run `kill-buffer-query-functions' > > === modified file 'src/process.c' > --- src/process.c 2013-06-27 14:47:52 +0000 > +++ src/process.c 2013-07-01 14:12:31 +0000 > @@ -7095,16 +7095,24 @@ > if (! noninteractive || initialized) > #endif > { > -#if defined HAVE_GLIB && !defined WINDOWSNT && !defined CYGWIN > +#if defined HAVE_GLIB && !defined WINDOWSNT > /* Tickle glib's child-handling code. Ask glib to wait for Emacs itself; > this should always fail, but is enough to initialize glib's > private SIGCHLD handler, allowing the code below to copy it into > LIB_CHILD_HANDLER. > > - For some reason tickling causes Cygwin bootstrap to fail, so it's > - skipped under Cygwin. FIXME: Skipping the tickling likely causes > - bugs in subprocess handling under Cygwin (Bug#14569). */ > - g_source_unref (g_child_watch_source_new (getpid ())); > + Under Cygwin as of July 2013, tickling causes bootstrap to fail, > + so do it only when Emacs is compiled with -DTICKLE_GLIB_BUGFIX; > + this is to help Cygwin maintainers reproduce the bug. > + FIXME: Skipping the tickling likely causes bugs in subprocess > + handling under Cygwin (Bug#14569). */ > +# if defined CYGWIN && !defined TICKLE_GLIB_BUGFIX > + bool tickle_glib = 0; > +# else > + bool tickle_glib = 1; > +# endif > + if (tickle_glib) > + g_source_unref (g_child_watch_source_new (getpid ())); > #endif > catch_child_signal (); > } Yes, this looks good. Please go ahead and apply it. If it turns out that this really is a Cygwin/Glib bug (and not, say, a bug in gmalloc.c), it will be much easier to find the problem if I can provide the Cygwin maintainers with a test case in C, independent of Emacs. Is there a simple way to simulate the kind of race condition that you think is going on here? Thanks. Ken