From owner-freebsd-current@freebsd.org Thu Jul 7 06:48:57 2016 Return-Path: Delivered-To: freebsd-current@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 84695B75A31 for ; Thu, 7 Jul 2016 06:48:57 +0000 (UTC) (envelope-from mailing-machine@vniz.net) Received: from mail-lf0-f49.google.com (mail-lf0-f49.google.com [209.85.215.49]) (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 24C311CE4 for ; Thu, 7 Jul 2016 06:48:57 +0000 (UTC) (envelope-from mailing-machine@vniz.net) Received: by mail-lf0-f49.google.com with SMTP id q132so5109163lfe.3 for ; Wed, 06 Jul 2016 23:48:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=EtdIF6uNxMw8QIZlVINtfPUXzm2xUBy+KZBCTastsVQ=; b=J9v3z8Lu1OkTymjTTNQoVuSF/v2uKK0xoG4IxAO38MPwnSvo1ooYvfZFg9jJmfIfNJ tkfKnNJhEkeDEp1mFXMCj7haRj8KBuTKQOKgyEhGj9pzZwkkZUU2z7/rRPMZP4zbc29D xnLsB9R6ObPkGXNn+x9G/uqmsAN+pKvBoH2hM78cKGA2QkFwzGgMuLhzWz+AVWrE95q1 JuaOvTChrCfy/wCZX01ef+fyQ14NwqHmy11YcY/QzwSkmivCuhBEUEbf+ml/KVfPv9WV Jbp4AWJ7mhvcbOF8gf2dEeQV3JrdQw9hgtkdaXdzixvtfRx3UNcOhkxPn0dIG2C+75TY tDiw== X-Gm-Message-State: ALyK8tK8c/sk66oo6NSyhxfTMXBGJkyBXLfRAbxrEVa8LCOJT/KKtcjnBk4JAyagRmk9CA== X-Received: by 10.25.133.87 with SMTP id h84mr5758688lfd.210.1467874134926; Wed, 06 Jul 2016 23:48:54 -0700 (PDT) Received: from [192.168.1.2] ([89.169.173.68]) by smtp.gmail.com with ESMTPSA id n7sm7077524lfb.31.2016.07.06.23.48.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Jul 2016 23:48:54 -0700 (PDT) Subject: Re: difference in SIGCHLD behavior between Linux and FreeBSD breaks apt To: Matthew Macy References: <155c3a25e3f.11fb4143170445.2284890475527649192@nextbsd.org> <201607070443.u674hsgK007808@gw.catspoiler.org> <558d9bff-0f9b-2b08-b057-32b2a41953ff@freebsd.org> <155c41681bb.1141d206175455.3130944807853755277@nextbsd.org> Cc: "K. Macy" , Don Lewis , "freebsd-hackers@freebsd.org" , "freebsd-current@freebsd.org" From: Andrey Chernov Message-ID: <2249b671-765a-13e5-3b19-862416f6f73d@freebsd.org> Date: Thu, 7 Jul 2016 09:48:53 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <155c41681bb.1141d206175455.3130944807853755277@nextbsd.org> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jul 2016 06:48:57 -0000 On 07.07.2016 9:40, Matthew Macy wrote: > > > > ---- On Wed, 06 Jul 2016 23:28:40 -0700 Andrey Chernov wrote ---- > > On 07.07.2016 7:52, K. Macy wrote: > > > On Wednesday, July 6, 2016, Don Lewis wrote: > > > > > >> On 6 Jul, Matthew Macy wrote: > > >>> As a first step towards managing linux user space in a chrooted > > >>> /compat/linux, initially for i915 testing with intel gpu tools, later > > >>> on to get widevine and steam to work I'm trying to get apt to work. > > >>> I've fixed a number of issues to date in pseudofs/linprocfs but now > > >>> I'm running in to a bug caused by differences in SIGCHLD handling > > >>> between Linux and FreeBSD. The situation is that apt will spawn dpkg > > >>> and wait on a pipe read. On Linux when dpkg exits the SIGCHLD to apt > > >>> causes a short read on the pipe which lets apt then continue. On > > >>> FreeBSD a SIGCHLD is silently ignored. I've even experimented with > > >>> doing a kill -20 to no effect. > > >>> > > >>> It would be easy enough to check sysvec against linux in pipe_read and > > >>> break out of the loop when it's awakened from msleep (assuming there > > >>> aren't deeper issues with signal propagation for anything other than > > >>> SIGINT/SIGKILL) and then do a short read. However, I'm assuming that > > >>> anyone who has worked in this area probably has a cleaner solution. > > >> > > >> It shoulds like SA_RESTART is set in sa_flags for SIGCHLD but shouldn't > > >> be in this case. > > > > > > > > > > > > Good point. > > > > > > Thinking more about it, this seems like a bug in FreeBSD. Not a valid > > > behavioral difference. > > > > You better need consult with POSIX before fixing things toward any > > Linuxisms blindly in our native code. I don't have a time now to see, is > > it really a bug according to POSIX, but please read or just find all > > SIGCHLD there: > > http://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html > > it explain SIGCHLD actions in deep details. > > And that one too: > > http://pubs.opengroup.org/onlinepubs/009695399/functions/sigaction.html > > > > I was pretty clear in my initial email that I'm only interested in changing behavior for Linux programs. Of course, but in case it is FreeBSD bug, it should be fixed in our native code first before making any changes in Linuxator. > And I was asking for help with that, not a link to SUSv3 or POSIX. In case I was not helpful, sorry for that. Before you try to change something in Linuxator you need to be sure that FreeBSD does it right (or wrong, then fix FreeBSD native code first). I am just insisting on proper steps of fixing it.