From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 015d3e5b for ; Fri, 27 Sep 2019 12:06:29 +0000 (UTC) Received: (qmail 8318 invoked by alias); 27 Sep 2019 12:06:22 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 44784 Received: (qmail 9272 invoked by uid 1010); 27 Sep 2019 12:06:22 -0000 X-Qmail-Scanner-Diagnostics: from mail-io1-f52.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25580. spamassassin: 3.4.2. Clear:RC:0(209.85.166.52):SA:0(-2.0/5.0):. Processed in 3.481231 secs); 27 Sep 2019 12:06:22 -0000 X-Envelope-From: roman.perepelitsa@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.166.52 as permitted sender) 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=oZQ57C2No17eswfAWV/1kvmj0BITRe1JY57j9H9+vJ8=; b=K0Hid6uKGf9GgCRQlQ0H9ucv8KrbjK//JDi13WbBM7KIvNZj7eHMSBiKB+kPdETWNH 2m0naokyPRcwy0DxmEmd2qGYOr5YUPQa7mxZ/8ZEJu6LoyTVngjXtwPIO9CX51iqkHJq z/WHXoXxYHjRHwMt+eLJZu1RxASWDdtwS3Q7mAvTLy+hqA00pD44JOYEdndHOQM11DN4 fm5o7jEuETnujpibgnznrDtHI2zhMPB2/8baIHFuzheborQoDTpC7kLazSVgEhaNG76I jdEI9eVrMWROb837OTxuIIiXjqqoFmDfkg5X63/B1dyAfsR+ZQWTWNVHQyfs+ouKho+d 8Scw== 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=oZQ57C2No17eswfAWV/1kvmj0BITRe1JY57j9H9+vJ8=; b=puE47Pfqz+Pm45OaZMJKOZLDIymgJStIr5vV+o2SoZaaNbd/JDWXga4tA2g/qQBeb7 SmPaxRPlZ6e/aqA+JlBtKXk359XajcHriKV1z7vMt83imUYyIXzwMvjOw8vxT5FsMRFX 0jJszUI5LLrIWViDTfKUunhvl9QnjyodOvA7QmDakTNxzhp4ZgCkBkI8ixK0l9V4/c9h Vp2zgEAXSOaRuKYSMOgIaOjF1ybzVYYnUlbxONHDZXoE3Q+zchPu0T620GvfYlWV4mmm 18m7QPhqlL3l4qQNyVoJI47WUK+OKBXy6Gg032icVDckF6aGVCMwQMqWIayXZ+CMICll mPMw== X-Gm-Message-State: APjAAAW+BYBt9lZ5dfKSZn9Cos8+RGcQismJSRpf6/cEOPkcwa/cN+n9 p0IWweduaRb5vxR1Q9glg8XQK6eUfzrpuuXhE5+DDY6GOl0= X-Google-Smtp-Source: APXvYqz2ABeTaZ2HIVznVrp0waOPZndwwO9Fg0mdFXtk2wxVwjvhlk0NzGoxJINBxTtyofYSsb1rIfgfD5dVaWMjT9M= X-Received: by 2002:a92:469a:: with SMTP id d26mr4264187ilk.304.1569585945191; Fri, 27 Sep 2019 05:05:45 -0700 (PDT) MIME-Version: 1.0 From: Roman Perepelitsa Date: Fri, 27 Sep 2019 14:05:34 +0200 Message-ID: Subject: PATCH: bug fix: infinite loop when tty disappears To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000b5e674059387b4fc" --000000000000b5e674059387b4fc Content-Type: text/plain; charset="UTF-8" When TTY disappears and there is at least one fd watcher, raw_getbyte() can enter an infinite loop where it keeps calling poll() over and over again. To reproduce, open a terminal, start zsh and type this: rm -f /tmp/fifo mkfifo /tmp/fifo exec 3<>/tmp/fifo do-nothing() {} zle -F 3 do-nothing Then make TTY disappear. For example, kill the parent with `kill -9 $PPID` and close the terminal window if it's still there. Observe that zsh is consuming 100% CPU. Note that do-nothing() never gets called. This patch makes the poll() loop in raw_getbyte() terminate when TTY is signalling POLLHUP. This makes the behavior consistent with the case where TTY disappears while no fd watchers are installed. Roman. --000000000000b5e674059387b4fc Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k122u7ci0 ZGlmZiAtLWdpdCBhL1NyYy9abGUvemxlX21haW4uYyBiL1NyYy9abGUvemxlX21haW4uYw0KaW5k ZXggZDNiOWFlYWI4Li4yMmMxMmNmMWYgMTAwNjQ0DQotLS0gYS9TcmMvWmxlL3psZV9tYWluLmMN CisrKyBiL1NyYy9abGUvemxlX21haW4uYw0KQEAgLTcwOCw3ICs3MDgsNyBAQCByYXdfZ2V0Ynl0 ZShsb25nIGRvX2tleXRtb3V0LCBjaGFyICpjcHRyLCBpbnQgZnVsbCkNCiAJICAgICAqLw0KIAkg ICAgaWYgKA0KICMgaWZkZWYgSEFWRV9QT0xMDQotCQkgKGZkc1swXS5yZXZlbnRzICYgUE9MTElO KQ0KKwkJIChmZHNbMF0ucmV2ZW50cyAmIChQT0xMSU58UE9MTEVSUnxQT0xMSFVQfFBPTExOVkFM KSkNCiAjIGVsc2UNCiAJCSBGRF9JU1NFVChTSFRUWSwgJmZvb2ZkKQ0KICMgZW5kaWYNCg== --000000000000b5e674059387b4fc--