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=-1.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 2580 invoked from network); 27 Apr 2021 20:50:11 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 27 Apr 2021 20:50:11 -0000 Received: (qmail 23705 invoked by uid 550); 27 Apr 2021 20:50:06 -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 23683 invoked from network); 27 Apr 2021 20:50:05 -0000 X-Virus-Scanned: Debian amavisd-new at disroot.org To: musl@lists.openwall.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1619556589; bh=cmkZYFOU69R3boVXj2G/bUQ1saVFxKfLQJorDFjNiyo=; h=To:References:From:Subject:Date:In-Reply-To; b=EUz/b6fNA0EqP9OxXE6l54+qAC4v5AsvW5z+lMEXXI5OYlCuirWiJu2NVOGoa3qir Y1s06FupmZEBtKcSzJo7lsAjadEbynxZb4fWKLruXrPbHXMhZcw5GOg6lW9cbvgT/p K/G3asi65iaRS/IjpNXrfL+Ic0A9096xMHQNIQbdDDUbp9TUESayASLlZ4lN9I6OOu BRARUo3+qIEx5cpv6Lcj7X6e8r5bZS4pVHls9Vh2YHK48TeJn2puuG1w+MYAnv5ayX nsFNVos//CAjYG5z36duzZW8PLNnRmQ/sa781RTdN/pajxj+UFCg12xWDJtL5gN4z7 MYZYscjXgbBMw== References: <611bff39248143248ce9edd6762fb804@tachyum.com> <20210427195550.GK2799122@port70.net> From: =?UTF-8?Q?=c3=89rico_Nogueira?= Message-ID: <5ff92ac3-a5e0-b97e-4205-f5d62c98b389@disroot.org> Date: Tue, 27 Apr 2021 17:49:45 -0300 Mime-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------C28D8AA3E01A5F3C93AC8344" Content-Language: en-US Subject: Re: [musl] Re: libc-test issue with sem_close This is a multi-part message in MIME format. --------------C28D8AA3E01A5F3C93AC8344 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Em 27/04/2021 17:33, Érico Nogueira escreveu: > Em 27/04/2021 16:55, Szabolcs Nagy escreveu: >> * Matus Kysel [2021-04-26 09:49:35 +0000]: >>> Hi Szabolcs, >>> >>> I am using your library as part of my validation suite and recently I >>> have updated it to latest master, but the sem_close test is not >>> buildable for me as it is missing fcntl.h header. I have attached >>> possible fix, because I did not found how to contribute to you repo. >> >> ccing musl, libc-test is mostly discussed there. >> >> posix says >> >> "Inclusion of the header may make visible symbols >> defined in the and headers." >> >> https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/semaphore.h.html >> >> >> which sounds optional, not guaranteed visibility of O_ open flags in >> semaphore.h, but sem_open is expected to be usable with only semaphore.h >> >> https://pubs.opengroup.org/onlinepubs/9699919799/functions/sem_open.html >> >> i'm not sure what is the strict standard requirement here, without >> clarification i consider it a libc header issue if an api is not usable >> with just the header where it is declared. >> > > The linux man page for sem_open(3) says including is necessary > for the flags, and indeed the test fails to build on glibc. > >  The oflag argument specifies flags that control the operation of the >  call.  (Definitions of the flags values can be obtained by including >  .) > > sem_open(name, 0) works without , otherwise it's necessary. > > Taking advantage of the fact that the regressions/sem_close-unmap test > has been brought up, it has some interesting results: > > On glibc 2.32: > - works with dynamic linking > - segfaults in sem_open() with static linking (might be something wrong > with the build?) > > On musl 1.2.2: > - segfaults most of the time (always?) My mistake, I was on 1.2.1. > > On musl master (aad50fcd791e009961621ddfbe3d4c245fd689a3): > - completes successfully most of the time, segfaults ever so often > (which would lead me to assume the fix from > f70375df85d26235a45e74559afd69be59e5ff99 wasn't enough) The sem_create() calls can sometimes fail here with EINVAL because sem_open is being called with the wrong number of arguments. Included patch to fix it. > > Note: for musl master I ran it as > >  /path/muslrepo/lib/libc.so /path/libc-tests/.../sem_close-unmap.exe > > Cheers, > Érico --------------C28D8AA3E01A5F3C93AC8344 Content-Type: text/x-patch; charset=UTF-8; name="0001-fix-sem_close-regression-test.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0001-fix-sem_close-regression-test.patch" =46rom bb113fe0b0e209681b1c0d6317440bf64f57ea80 Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?=3DC3=3D89rico=3D20Nogueira?=3D Date: Tue, 27 Apr 2021 17:46:17 -0300 Subject: [PATCH] fix sem_close regression test sem_close with O_CREAT takes 4 parameters, not 3. The last parameter, the initial value for the semaphore, had an arbitrary value from whatever was on the stack, and lead to spurious failures with EINVAL when it happened to be greater than SEM_VALUE_MAX. Since there isn't error checking in this test, this lead to a segfault in the first sem_post call. --- src/regression/sem_close-unmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/regression/sem_close-unmap.c b/src/regression/sem_close-= unmap.c index f1e51d9..73c53e3 100644 --- a/src/regression/sem_close-unmap.c +++ b/src/regression/sem_close-unmap.c @@ -8,7 +8,7 @@ int main() char buf[] =3D "mysemXXXXXX"; if (!mktemp(buf)) return 1; // open twice - sem_t *sem =3D sem_open(buf, O_CREAT|O_EXCL, 0600); + sem_t *sem =3D sem_open(buf, O_CREAT|O_EXCL, 0600, 0); sem_open(buf, 0); sem_unlink(buf); // close once --=20 2.31.1 --------------C28D8AA3E01A5F3C93AC8344--