From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Matthias Dahl Newsgroups: gmane.emacs.devel Subject: Re: wait_reading_process_ouput hangs in certain cases (w/ patches) Date: Tue, 13 Mar 2018 16:10:13 +0100 Message-ID: References: <206ebefa-7583-f049-140c-c8fd041b0719@cs.ucla.edu> <709614e8-1937-07c1-f554-b453ed4f3d4a@binary-island.eu> <7550438b-9fd4-d374-e571-8bb16456cad5@cs.ucla.edu> <797d0e16-1bae-50c2-35f8-05489ffce935@binary-island.eu> <83tvugdiu5.fsf@gnu.org> <877er5s0xv.fsf@gmail.com> <4e4c72bb-295d-81e1-e4ed-cad256bca83c@binary-island.eu> <87zi3v9461.fsf@gmail.com> <87k1uy8x68.fsf@gmail.com> <6d1970af-8c5c-20ba-be09-0b9aa757d663@binary-island.eu> <13b3e003-d12b-33a7-3ebe-c07b017a7cc0@binary-island.eu> <87r2oow3uc.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------AC259239C12E943902EE8292" X-Trace: blaine.gmane.org 1520953753 27631 195.159.176.226 (13 Mar 2018 15:09:13 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 13 Mar 2018 15:09:13 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 Cc: Lars Ingebrigtsen , =?UTF-8?Q?andr=c3=a9s_ram=c3=adrez?= , Eli Zaretskii , Robert Pluim , Paul Eggert To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Mar 13 16:09:09 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1evlY4-00076k-Mi for ged-emacs-devel@m.gmane.org; Tue, 13 Mar 2018 16:09:08 +0100 Original-Received: from localhost ([::1]:40440 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evla6-0000WP-0D for ged-emacs-devel@m.gmane.org; Tue, 13 Mar 2018 11:11:14 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlZG-0000Sj-Vz for emacs-devel@gnu.org; Tue, 13 Mar 2018 11:10:28 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evlZA-0000GQ-Ve for emacs-devel@gnu.org; Tue, 13 Mar 2018 11:10:22 -0400 Original-Received: from ud19.udmedia.de ([194.117.254.59]:54036 helo=mail.ud19.udmedia.de) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1evlZA-0000Fo-IL for emacs-devel@gnu.org; Tue, 13 Mar 2018 11:10:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=binary-island.eu; h= subject:to:references:cc:from:message-id:date:mime-version :in-reply-to:content-type; s=k1; bh=HcXXJBZ+7MK39lz/WW1Hebv4nIdC Gz4ucecWBZtomqU=; b=Oo/MFVWnCFOAncqqb19tUbFZgCrglyFzqsa2MgpYQNSl Tx6uJ1zzca36czkiM6trHOmX/zl00UuwDNzr0uWJr9Wam5ihd6YNLLxLXlmpd17y eMt7fZW3lJPesakWnA7Y8NEjgXvtPdi/5340aE9p6VPDgZQTJLf13mVHMoyfGUU= Original-Received: (qmail 7730 invoked from network); 13 Mar 2018 16:10:14 +0100 Original-Received: from unknown (HELO ?IPv6:2a02:810b:c540:234:36aa:25b9:ca8f:d05f?) (ud19?126p1@2a02:810b:c540:234:36aa:25b9:ca8f:d05f) by mail.ud19.udmedia.de with ESMTPSA (ECDHE-RSA-AES128-GCM-SHA256 encrypted, authenticated); 13 Mar 2018 16:10:14 +0100 Openpgp: id=1E87ADA02EFE759EFC20B2D1042F47D273AA780C In-Reply-To: <87r2oow3uc.fsf@gmail.com> Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 194.117.254.59 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:223689 Archived-At: This is a multi-part message in MIME format. --------------AC259239C12E943902EE8292 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Hi Robert, Thank you very much for pointing this out. You are absolutely correct, my patches did undo your fix. I did some digging and attached is a fix for xg_select() which did not properly imitate pselect() behavior in all cases. That ultimately caused the bug you were seeing. @Lars and Andrés: When testing the previously sent patches, please also include this one here or otherwise you will (sooner or later) run into a different kind of problems. Thanks again, Matthias -- Dipl.-Inf. (FH) Matthias Dahl | Software Engineer | binary-island.eu --------------AC259239C12E943902EE8292 Content-Type: text/x-patch; name="0003-Make-xg_select-behave-more-like-pselect.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0003-Make-xg_select-behave-more-like-pselect.patch" =46rom 2f44ef364bc320dfd73febc51f0c0da862db49b1 Mon Sep 17 00:00:00 2001 From: Matthias Dahl Date: Tue, 13 Mar 2018 15:35:16 +0100 Subject: [PATCH 3/3] Make xg_select() behave more like pselect() * src/xgselect.c (xg_select): If no file descriptors have data ready, pselect() clears the passed in fd sets whereas xg_select() does not which caused Bug#21337 for `wait_reading_process_output'. Clear the passed in sets if no fds are ready but leave them untouched if pselect() returns an error -- just like pselect() does itself. --- src/xgselect.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/xgselect.c b/src/xgselect.c index fedd3127ef..f68982143e 100644 --- a/src/xgselect.c +++ b/src/xgselect.c @@ -143,6 +143,14 @@ xg_select (int fds_lim, fd_set *rfds, fd_set *wfds, = fd_set *efds, ++retval; } } + else if (nfds =3D=3D 0) + { + // pselect() clears the file descriptor sets if no fd is ready (bu= t + // not if an error occurred), so should we to be compatible. (Bug#= 21337) + if (rfds) FD_ZERO (rfds); + if (wfds) FD_ZERO (wfds); + if (efds) FD_ZERO (efds); + } =20 /* If Gtk+ is in use eventually gtk_main_iteration will be called, unless retval is zero. */ --=20 2.16.2 --------------AC259239C12E943902EE8292--