From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#6074: accept-process-output on listening sockets cause non-interruptible infloop Date: Mon, 22 Jul 2019 03:52:33 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000a96b4d058e3d0327" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="53785"; mail-complaints-to="usenet@blaine.gmane.org" To: 6074@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Jul 22 05:54:12 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hpPOt-000DsF-Js for geb-bug-gnu-emacs@m.gmane.org; Mon, 22 Jul 2019 05:54:11 +0200 Original-Received: from localhost ([::1]:58592 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hpPOr-00037n-TZ for geb-bug-gnu-emacs@m.gmane.org; Sun, 21 Jul 2019 23:54:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45090) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hpPOl-00035o-8c for bug-gnu-emacs@gnu.org; Sun, 21 Jul 2019 23:54:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hpPOk-0005Mu-7N for bug-gnu-emacs@gnu.org; Sun, 21 Jul 2019 23:54:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:50987) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hpPOk-0005MY-1H for bug-gnu-emacs@gnu.org; Sun, 21 Jul 2019 23:54:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hpPOj-0002bP-Sv for bug-gnu-emacs@gnu.org; Sun, 21 Jul 2019 23:54:01 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 22 Jul 2019 03:54:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6074 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed Original-Received: via spool by 6074-submit@debbugs.gnu.org id=B6074.15637675969949 (code B ref 6074); Mon, 22 Jul 2019 03:54:01 +0000 Original-Received: (at 6074) by debbugs.gnu.org; 22 Jul 2019 03:53:16 +0000 Original-Received: from localhost ([127.0.0.1]:59808 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hpPO0-0002aP-KU for submit@debbugs.gnu.org; Sun, 21 Jul 2019 23:53:16 -0400 Original-Received: from mail-oi1-f179.google.com ([209.85.167.179]:37498) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hpPNy-0002aD-Uj for 6074@debbugs.gnu.org; Sun, 21 Jul 2019 23:53:15 -0400 Original-Received: by mail-oi1-f179.google.com with SMTP id t76so28593365oih.4 for <6074@debbugs.gnu.org>; Sun, 21 Jul 2019 20:53:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=xr88X9Rc6Gda3qpRlo/gLTIfXmQoVfX/ILO6rnexQJk=; b=UEgM/kviq6SWYc4L/WoSjoK4xbppHseSZF27uN0gqmKxgoZ8iF0B5a9Oe1mqrxLbmW rDhrZbf8Vtv46zYQb0QBALLwFUcRyqU/a9vKCNff2Nd0cK5uuDkYcn0FXWA0cFobyPrl 37ZXbIGPfrDtc/L2ex1dNnYUry3GXYEw4sjIYj4R06/dguLcbhSPKrFxjdYbRudrGyh2 CqdLGMneCTjqdi4YRR0RIGTan3YUdrJxrK+xYieOEqkg17fOoe5gIlD+5Z0UpBQWXxu/ BH/kJd8pzuyecSyoPyB6vVHvJXQhl5luz9x0f2HCQXSatBGNaOTJk9sx2eOnjvlPZKYY 6BPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=xr88X9Rc6Gda3qpRlo/gLTIfXmQoVfX/ILO6rnexQJk=; b=GnKj+xCjHF7r65r4K2t8BenOXg5pFbFWT85aiOK++txM+j/gXmqcWoW/t67+ycH771 /sU4ZTkw7BuWUISvQVzhpwEAIKQtMLF30O1hWdDZHE+biHQj+I/zlRvlRX9KPXTL5UeB 3y0LAElofQ+Frd639ZXDsvoq/dolneZuQHgi2Miza6QMkEYedsMeBfFJpK+e7KLMujRq Pq1FcuS9GjsaUAMJMz+VxlwchJOCE0nzcg3KQfKxDvPO3hEe5SdhE/8MV6Vbo7mwZ6U+ OXwvKk3K5oY09MT3w2kjHmHa5a3Rr0Sxg333s0kbUrYWLgu+ks+TS8Wod3u71grtH4H5 EKLg== X-Gm-Message-State: APjAAAU5n0LzUmOaJepkdDRrs5AoWd586hY63U46R22vP4JDWfeHg+Kw 08B++mKmOJO+LsvlqFpXQkjXckyp1LqpZ835qm/kFaOp X-Google-Smtp-Source: APXvYqyGP14HNh90xtMfWFL3GZtPl7GC6wVz5HHrpQ32BrB54aNagwiXrDloqrxeNSh3Ru2QNkr2ldxiuBDF39PUaF0= X-Received: by 2002:aca:4790:: with SMTP id u138mr34384730oia.44.1563767589127; Sun, 21 Jul 2019 20:53:09 -0700 (PDT) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.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" Xref: news.gmane.org gmane.emacs.bugs:163576 Archived-At: --000000000000a96b4d058e3d0327 Content-Type: text/plain; charset="UTF-8" > With this code Emacs seems to be stuck in an endless loop and is not > incorruptible with C-g: > (let ((proc (make-network-process :name "foo" :server t :noquery t > :family 'local :service "/tmp/foo.socket"))) > (accept-process-output proc)) On Linux, the problem appears to be that we don't abort this infloop in process.c if a read () returns EINVAL: while (true) { int nread = read_process_output (proc, wait_proc->infd); if (nread < 0) { if (errno == EIO || would_block (errno)) break; } else { if (got_some_output < nread) got_some_output = nread; if (nread == 0) break; read_some_bytes = true; } } That seems problematic to me, since we might get non-EIO errors for other reasons. I'm attaching a patch that appears to fix the issue. --000000000000a96b4d058e3d0327 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Don-t-retry-reading-after-receiving-EINVAL-bug-6074.patch" Content-Disposition: attachment; filename="0001-Don-t-retry-reading-after-receiving-EINVAL-bug-6074.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jydutk5p0 RnJvbSBhZDI5NGJiMWU3ZmY3MDEyZGNhMzM0NWE4Y2EyMDQ2ZTBmOWRjOGZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBNb24s IDIyIEp1bCAyMDE5IDAzOjQ5OjU0ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgcmV0cnkg cmVhZGluZyBhZnRlciByZWNlaXZpbmcgRUlOVkFMIChidWcjNjA3NCkKCiogc3JjL3Byb2Nlc3Mu YyAod2FpdF9yZWFkaW5nX3Byb2Nlc3Nfb3V0cHV0KTogRG9uJ3QgcmV0cnkgcmVhZGluZwpmcm9t IGFuIGZkIGFmdGVyIGFuIHVua25vd24gZXJyb3IuCi0tLQogc3JjL3Byb2Nlc3MuYyB8IDQgKysr LQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyYy9wcm9jZXNzLmMgYi9zcmMvcHJvY2Vzcy5jCmluZGV4IGFiYWRhYmU3N2UuLjEz MTE0MDkyNzQgMTAwNjQ0Ci0tLSBhL3NyYy9wcm9jZXNzLmMKKysrIGIvc3JjL3Byb2Nlc3MuYwpA QCAtNTI3Nyw3ICs1Mjc3LDkgQEAgd2FpdF9yZWFkaW5nX3Byb2Nlc3Nfb3V0cHV0IChpbnRtYXhf dCB0aW1lX2xpbWl0LCBpbnQgbnNlY3MsIGludCByZWFkX2tiZCwKIAkJICBpbnQgbnJlYWQgPSBy ZWFkX3Byb2Nlc3Nfb3V0cHV0IChwcm9jLCB3YWl0X3Byb2MtPmluZmQpOwogCQkgIGlmIChucmVh ZCA8IDApCiAJCSAgICB7Ci0JCSAgICAgIGlmIChlcnJubyA9PSBFSU8gfHwgd291bGRfYmxvY2sg KGVycm5vKSkKKwkJICAgICAgaWYgKGVycm5vID09IEVJTlRSKQorCQkJY29udGludWU7CisJCSAg ICAgIGVsc2UKIAkJCWJyZWFrOwogCQkgICAgfQogCQkgIGVsc2UKLS0gCjIuMjIuMAoK --000000000000a96b4d058e3d0327--