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.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 11466 invoked from network); 16 Feb 2022 19:40:37 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 16 Feb 2022 19:40:37 -0000 Received: (qmail 24363 invoked by uid 550); 16 Feb 2022 19:40:35 -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 24325 invoked from network); 16 Feb 2022 19:40:35 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1645040423; bh=kVSgqHXI9fVhovgP9b7RQIvpCaKBPGZVODjcDW/gS6k=; h=X-UI-Sender-Class:Date:From:To:Subject; b=A5V10iajSUZfvX6N4UROnGS2FhjbGhnO8EicpRSxger8NaDgd+CI7erMqrJsxJZKS IUTbthgv5xFGmkROoWzt0xM5FzquLE2ne3INEWTEiaUSIJd1RfM74e7U9CCPAaW5FI gOGm0PNQbjY0z6Q3n580esCq5MsepOW2d5akpdO0= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Date: Wed, 16 Feb 2022 20:40:20 +0100 From: Markus Wichmann To: musl@lists.openwall.com Message-ID: <20220216194020.GA16437@voyager> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-Provags-ID: V03:K1:j+L6LImVbzHc68fomsmxFU+oqoNZT1E+gytAfBvF6iPYCL88deD ByzmCE8wf4hDMimqZ2MjQ1Xu/VmpgRLeYjmEkWCCw1wlbUlWJE+sK/CpjRzBIXSrSkj2ekQ wztTo1rFxK6WWo45qcK/ttCtcuBmRKjFGwI6/JTox3njOjhG4VYIpskg4HXlcHOvcSIxB4s d0zNTIoFOo1t1NGCU9wXw== X-UI-Out-Filterresults: notjunk:1;V03:K0:rb0tkwDwiaE=:cxyJSWKC60BNMuynedtNRT O25PRP1BLwfnQAq+htWZYpr6Xtzy/OqtZtYPTotMNWOJbaGzyOFoihpOCqRYBQTlYSkqEEysA 1OnwA5Ac+Tte1XjNT3ectbL2joIr/zi6wnBSRYVgFhdiMZfcdcx93c9xIg49RJ7JdKOTHMLVk LoOFLsQyPDz6JEBZTtmNovwRqfpkjdtMyp7Qe/GQv0gbifNzk2me6XvMyu52tSHcdaF1SI9mL nlw7uBire2QLW1bCf/6BalU0KYkUi4Ojc8QELwn2kDOjFVuPar5PDx1DBa1X51BIItzWGdQ3j +21q0YDLbmL4+8s0hymXl+ZiAq8CgWzRaH4V+MkPo8ih978SddyK6JBYM0Mucq7p6GmBMW5it kJ0zZnCzbElBKIfpA0hOH/fBGig9b7/dNZQLCtyxLHRKh2ZPCBBnFOPfycjUQqQRNwKIG00vt Y21v+mOLT9GEVt4M0R+YS9dnAqfqCsOos5P0X5q92n9B4s0w8zajbfb+8EUX+Fwin8HtmNuId AG1pNL8aBp6HxfIOH0XTzEL5Tu5kZDGkyA0+o0ckIzq6oJDjBJoimBzzLAFFMBw7j/4zg1a8f A6uezuNUhgMQLwor3Taykdj0BQd7mva3dTeFgHVOn6a/psAVECkrRIcK8+LbtJBiPNxZMEGvd DQJmVYt8rPzar2uJJn0C8scEesRW48/21xLYTNl6GKa5wxLoQ8386KKNV8gajRyuy2IMnAoeX PrkRD1MF/XOJUP/vQB3/+wfxZ719lMNTrz2ZpaX3XAm+jQuTw0TS80GbyBpWjB08IhfN2hIGH 6nC5y3NUA3Ttcw1XoBYSNPuIA9F+zhpPaw3sSKZaDZ0xvEZ96IK0ArLkhLK21ZK2sbrE43eDY l7HJjw7Qa/MR2NLvWJUSwwQQVprIe79ISqEUBZsPfYW5kfOVzHpKfjoA02oXDsClBjiJef7dB FQG1j53vALT7jt+BBlKRT665z5/FTxVh/CHajSGXnurnjpkk8M1FWrG35e0o6mRKg/DirkYtC ExAqHoecj7qq+BS4FUJ1sBEHcJ3pHHxEByHaQD5RMfhFHJBaIaDyDaKWSxJG7/KVljhMJW/MK iVa3ZuG1BCJkUM= Subject: [musl] Is errno signal-safe? Hi all, today I had a flash of inspiration while staring at some code: errno is a global variable, right? OK, it is thread-local, but still a global variable in the context of one thread. And looking at a global variable while it may (or may not) be modified in a signal handler is not safe to do. So now I have to wonder. There are a bunch of functions that set errno, that are on the ostensibly async-signal-safe list, like for example write(). And to my knowledge, changes to errno are not turned back by sigreturn(). So, are changes to errno made in a signal handler propagated to the main program? If so, how do I inspect errno correctly in the main program? I could block signals, but for one thing, doing so every time errno might be relevant is going to be overkill, and for two, if the system call I want the errno from is also blocking and I want to allow signals while the call is blocking, there is no way to do that without race condition. But then again, now that I thought of it, this is so obvious that surely someone else must have stumbled across it before, right? A solution must exist, right? Ciao, Markus