From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 9947 invoked from network); 19 Jan 2021 20:28:33 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 19 Jan 2021 20:28:33 -0000 Received: (qmail 17722 invoked by uid 550); 19 Jan 2021 20:28:30 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 17700 invoked from network); 19 Jan 2021 20:28:29 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=notion-se.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ZM8K+m4ICkAqTyec5elY9ZsyMSItZSBTjysSLTTzfzU=; b=RRMU/qQZBeMvHnToF/CTOa3Vt1iPLKtterIo6itCw4LWFtqd/DeSds5UA9GZ2s4kYA MJcPMJ00ogCTsJzlC+0cQTaHxqAm2xXKMOzsQorEWiKO3rhG+VDLU9m4ZECwP1MUVdDh peqYk7bvsYUAM0c8MciMU6/J2STVEQTLVXW0MupiyaxY4zPyKcX9p3phyrv8wHf5muXn +c7om2IfDzAxKj9WZd2BOWcaDWla8g2KqkHCuH2mJ23Mrm5fbpf4QqIFDRAUWe2PNMW7 TxGOcRAwN+klRrBqS2xr0JTjareLt1fTEsI2WrjbYsU7OM8SUWMvHx16eJzsdqwK6cb/ r9XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ZM8K+m4ICkAqTyec5elY9ZsyMSItZSBTjysSLTTzfzU=; b=pQy/WR+w8ClqOx9lPDgBDGn2iC59OKUkK3wKUz1XL6V9LljPlk0utipJVCRsLLKMdH IqHaTanmhAODYtwYPNT/tsNNuN/MvE+w++iTa8zJRgAL+IwlzOp0kg8UfeXaABazoA90 AFsw4uk6kjpHgfgvDvFF9X1h47AgtXZU5VCIO97jJ7GJ1Bc1QWy7ni/f4nNtjbmXX3YL G1MA1e3bkDm7LaBNXc6Spg3lCFox2wgbCi81QaUAyN7K6/8M1HSQYs4K/lvkNp6eoToo 6y5iyWN1s4sCMVNrK4P6LknCo/xMpN8ITb66JuUCfcxqXPUq4kjnASwkjvpywvAuxY0n +0Mw== X-Gm-Message-State: AOAM533Q3jKtVw3F6bEXF1bG/MX1qEvuFP2mm+tnrCHWPVESn9WcKPwt qW+RIqIoDls0UnvDzM/aDZ/qhkHSUchY+Qwkf+UBaYr8F9nsSQ== X-Google-Smtp-Source: ABdhPJzsh0ley3G84SpPoUPHQTznlSlfzqbqtP7p45jSDAoAQkcbHMg6xOFCqfVv5q9B764Zw7XjDxt9uzxrP2iDiBo= X-Received: by 2002:a17:903:31d1:b029:de:8361:739b with SMTP id v17-20020a17090331d1b02900de8361739bmr6551151ple.85.1611088096032; Tue, 19 Jan 2021 12:28:16 -0800 (PST) MIME-Version: 1.0 References: <20210119193337.GB2006@voyager> In-Reply-To: From: Rasmus Andersson Date: Tue, 19 Jan 2021 12:28:05 -0800 Message-ID: To: musl@lists.openwall.com Content-Type: multipart/mixed; boundary="000000000000aaab8a05b946ad26" Subject: Re: [musl] waitpid (wait4) on Linux 5 returns invalid values --000000000000aaab8a05b946ad26 Content-Type: text/plain; charset="UTF-8" In the meantime, in case you're curious, here's a program that reproduces the issue. I've attached a statically-compiled version too that can be disassembled. Running it: $ gcc -static a.c && ./a.out waitpid returned -10, wstat=0 #include #include int main(int argc, char **argv) { int wstat = 0; pid_t child = waitpid(-1, &wstat, WNOHANG); printf("waitpid returned %d, wstat=%d\n", child, wstat); return 0; } On Tue, Jan 19, 2021 at 12:17 PM Rasmus Andersson wrote: > > On Tue, Jan 19, 2021 at 11:33 AM Markus Wichmann wrote: > > > > On Tue, Jan 19, 2021 at 10:18:04AM -0800, Rasmus Andersson wrote: > > > However the wait4 syscall[3] in Linux 5 returns other values, > > > specifically it returns errors as negative values. The error that > > > trips up programs like runit's runsv is ECHILD (-10) which wait4 > > > returns when there are no children (i.e. they have exited.) > > > > > > > Hmm... that is very weird. That should not happen. Because the > > syscall_cp macro already contains a call to __syscall_ret(), which does > > exactly what you propose. So that means, there is something else going > > on in your copy of the code. Did you change anything about the source > > code? Or can you disassemble the function to see what it does? > > > Strange! You are right of course; looking at src/internal/syscall.h I > indeed see that syscall_cp calls __syscall_ret(__syscall_cp(args)) > The musl I'm building with comes from https://musl.cc/#binaries which > is created from these scripts according to the author: > https://git.zv.io/xstatic/mcm It doesn't seem to apply any patches. > Anyhow, I'm currently building musl & gcc myself using > musl-cross-make. I will see how that pans out and report back. > Thank you for your quick response Markus! --000000000000aaab8a05b946ad26 Content-Type: application/x-gzip; name="a.tar.gz" Content-Disposition: attachment; filename="a.tar.gz" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kk4g8q020 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 Dq5d165r17Xr/7vr/wBrxnJHAFAAAA== --000000000000aaab8a05b946ad26--