From owner-freebsd-bugs@freebsd.org Sun May 10 07:22:41 2020 Return-Path: Delivered-To: freebsd-bugs@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1ABCA2DC442 for ; Sun, 10 May 2020 07:22:41 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from mailman.nyi.freebsd.org (mailman.nyi.freebsd.org [IPv6:2610:1c1:1:606c::50:13]) by mx1.freebsd.org (Postfix) with ESMTP id 49KbB872Xlz3LMK for ; Sun, 10 May 2020 07:22:40 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: by mailman.nyi.freebsd.org (Postfix) id F18E52DC441; Sun, 10 May 2020 07:22:40 +0000 (UTC) Delivered-To: bugs@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F153E2DC440 for ; Sun, 10 May 2020 07:22:40 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49KbB86C01z3LMJ for ; Sun, 10 May 2020 07:22:40 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2610:1c1:1:606c::50:1d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B663A15D1 for ; Sun, 10 May 2020 07:22:40 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org ([127.0.1.5]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id 04A7Meit072821 for ; Sun, 10 May 2020 07:22:40 GMT (envelope-from bugzilla-noreply@freebsd.org) Received: (from www@localhost) by kenobi.freebsd.org (8.15.2/8.15.2/Submit) id 04A7MeqW072820 for bugs@FreeBSD.org; Sun, 10 May 2020 07:22:40 GMT (envelope-from bugzilla-noreply@freebsd.org) X-Authentication-Warning: kenobi.freebsd.org: www set sender to bugzilla-noreply@freebsd.org using -f From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 246350] kqueue fails to report pipe writable after the read end is closed Date: Sun, 10 May 2020 07:22:40 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 12.1-RELEASE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Only Me X-Bugzilla-Who: njs@pobox.com X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: bugs@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter attachments.mimetype attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 May 2020 07:22:41 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D246350 Bug ID: 246350 Summary: kqueue fails to report pipe writable after the read end is closed Product: Base System Version: 12.1-RELEASE Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: njs@pobox.com Attachment #214335 text/plain mime type: Created attachment 214335 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D214335&action= =3Dedit fbsd-kqueue-pipe-bug-demo.py Consider the following sequence of events: 1. Call pipe() to open a pipe 2. Set the write side to non-blocking 3. Write into the write side until the pipe buffer is full and write() retu= rns EWOULDBLOCK 4. Use kqueue to register a wait for the write end to become writable again (EVFILT_WRITE) 5. Close the read end of the pipe At this point, I would expect that kqueue would return an event to report t= hat the pipe is "writable". The man page says it will ("The filter will set EV_= EOF when the reader disconnects"). On the same pipe, in this situation, select() reports that it's writable. On macOS, kqueue reports that it's writable. However, on FreeBSD 12, kqueue does *not* report any event in this situatio= n. I've attached a minimal Python script to demonstrate. Output from the script when running on macOS: ------------ filling pipe buffer select() says the write pipe is NOT writable closing read end of pipe select() says the write pipe is writable waiting for kqueue to report the write end is writable done! [] ------------ Output from the script when running on FreeBSD 12.1-RELEASE: ------------ filling pipe buffer select() says the write pipe is NOT writable closing read end of pipe select() says the write pipe is writable waiting for kqueue to report the write end is writable [...hangs forever...] ------------ --=20 You are receiving this mail because: You are the assignee for the bug.=