From owner-freebsd-hackers@freebsd.org Fri Mar 3 14:11:40 2017 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C6021CF50C9 for ; Fri, 3 Mar 2017 14:11:40 +0000 (UTC) (envelope-from ssgriffonuser@gmail.com) Received: from mail-lf0-x230.google.com (mail-lf0-x230.google.com [IPv6:2a00:1450:4010:c07::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4FBE0115B for ; Fri, 3 Mar 2017 14:11:40 +0000 (UTC) (envelope-from ssgriffonuser@gmail.com) Received: by mail-lf0-x230.google.com with SMTP id a6so47924840lfa.0 for ; Fri, 03 Mar 2017 06:11:40 -0800 (PST) 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=JyV4feNoHLUxf34ziPO4tC47LvN3PoVLviHfkAR2RkI=; b=RY/rck6Li5/hBLyxtXGwySYpE9a+lkMN3iRFcxEL7+CnXQTPXDqr1ag50WvGvABwWM DNXt23SH6x6BXv0drjA4z5fwJ6/10Jru8yUMLJJ1vTSqP36kCzQUak1o1KLx4XbBFb1l bXM4W2p5rFZjwabXVSim6G0wqW8CvNzHqsCTot0U6ooa9SSl9jDjWp7rKARWNiOq5beI 9kIy7TihIz7hJQzG9/MIZ8CJ0pqStacudm0OE9ODmUiXXPvSjIXbfw1J440IVFrmypa4 I8Ace96T945OhxqvmXiJB1O/KZ9GLk3f2rHLX6q/+bMpWMsS7s2RV2DQm8H7doyvbGPI dzWw== 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=JyV4feNoHLUxf34ziPO4tC47LvN3PoVLviHfkAR2RkI=; b=FQf3oudp9mslnzt71JJ4nOCzEXHVLckDOZ7YO/vY+H7RaWY24ov2PIeuJXklmVpCn0 F14Q+3mjKXwayM4KgAAzbQJfLOBqZGHUUfBIhXYCbccDPr8dX+ziZmHFpzyfghs2eI54 POZNdJ+eKyNUFeaLcbsHzHfed3rDp3e3QZE/8o0/7BMUWrXsBWHCtDGCBcVB9yJNuyxo kx6CFvZGeZe04F/ecu4TeojMz/IhLv779HSG3X7FNO0kJoAGIUy16ESJSCp8QWtp6p/d ZIXQocothbnSyeJoNrsTuUpQ8BbeSTK+8J9MOdTjt0nGcIxfqQmY40E0RE1ouTmwEkez vcww== X-Gm-Message-State: AMke39m1PxRAdQ+0z1026gaTJ4cSCTF63y9YsAY2H9hm21qFrbR8lju8Cqb+oSHuMMnEqwl8xQ0dxPyYeQJmxw== X-Received: by 10.46.71.69 with SMTP id u66mr1038304lja.99.1488550298227; Fri, 03 Mar 2017 06:11:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.25.151.209 with HTTP; Fri, 3 Mar 2017 06:11:37 -0800 (PST) From: ss griffon Date: Fri, 3 Mar 2017 08:11:37 -0600 Message-ID: Subject: Discrepancy between kevent error codes with socketpair fds To: freebsd-hackers@freebsd.org Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.23 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Mar 2017 14:11:40 -0000 I'm hoping somebody can explain the following behavior to me. It's not causing me any issues but I find it curious: 1. open a socketpair (int sv[2]) 2. close both ends 3. attempt to add sv[0] to kevent and "Invalid Argument" is returned (EINVAL) 4. attempt to add sv[1] to kevent instead of sv[0] and "Bad Descriptor" is returned (EBADF). It doesn't seem to matter the order of closing the sockets. Sample code is below. Thanks in advance. #include #include #include #include #include #include #include int main(int argc, char** argv) { int sv[2]; int err = socketpair(AF_LOCAL, SOCK_SEQPACKET, 0, sv); if(err == -1) { perror("socketpair"); exit(1); } err = close(sv[0]); if(err == -1) { perror("close1"); exit(1); } err = close(sv[1]); if(err == -1) { perror("close2"); exit(1); } int kqfd = kqueue(); if(kqfd == -1) { perror("kqueue"); exit(1); } struct kevent event; EV_SET(&event, sv[0], EVFILT_READ, EV_ADD, 0, 0, 0); //Change to sv[1] to get EBADF int events = kevent(kqfd, &event, 1, nullptr, 0, nullptr); //Returns EINVAL if(events == -1) { perror("kevent"); exit(1); } return 0; }