This patch updates the documentation regarding two NetBSD bugs that I just filed
(see attachments).


2023-02-03  Bruno Haible  <br...@clisp.org>

        doc: Update regarding NetBSD.
        * doc/posix-functions/sigprocmask.texi: Mention a NetBSD 9.0 bug.
        * doc/posix-functions/pthread_sigmask.texi: Likewise.

diff --git a/doc/posix-functions/pthread_sigmask.texi 
b/doc/posix-functions/pthread_sigmask.texi
index 47ee1866b0..bbea927e4f 100644
--- a/doc/posix-functions/pthread_sigmask.texi
+++ b/doc/posix-functions/pthread_sigmask.texi
@@ -35,6 +35,6 @@ Portability problems not fixed by Gnulib:
 On platforms that do not natively support this function,
 it has unspecified behavior in a multi-threaded process.
 @item
-This function may not fail when the first argument is invalid on some 
platforms:
-NetBSD 8.0.
+In case of failure, the return value is wrong on some platforms:
+NetBSD 9.0 when libpthread is not in use.
 @end itemize
diff --git a/doc/posix-functions/sigprocmask.texi 
b/doc/posix-functions/sigprocmask.texi
index 1a1379a21d..2086e6a8b2 100644
--- a/doc/posix-functions/sigprocmask.texi
+++ b/doc/posix-functions/sigprocmask.texi
@@ -15,6 +15,9 @@ mingw, MSVC 14.
 
 Portability problems not fixed by Gnulib:
 @itemize
+@item
+In case of failure, the return value is wrong on some platforms:
+NetBSD 9.0 when libpthread is in use.
 @end itemize
 
 Note: Although @code{sigprocmask} officially has undefined behaviour in
To: gnats-b...@netbsd.org
Subject: pthread_sigmask return value wrong when libpthread is not in use
From: br...@clisp.org
Reply-To: br...@clisp.org
X-send-pr-version: 3.95


>Submitter-Id:  net
>Originator:    
>Organization:  GNU
>Confidential:  no
>Synopsis:      The return value of pthread_sigmask is not standards compliant
>Severity:      non-critical
>Priority:      medium
>Category:      lib
>Class:         sw-bug
>Release:       NetBSD 9.0
>Environment:
System: NetBSD netbsd9.bruno.haible.de 9.0 NetBSD 9.0 (GENERIC) #0: Fri Feb 14 
00:06:28 UTC 2020 
mkre...@mkrepro.netbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
When a program that is not linked with libpthread uses the pthread_sigmask
function, its return value can be wrong.
See 
https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.html
section "RETURN VALUE".
>How-To-Repeat:
Compile this program
==================== foo.c ================
#include <errno.h>
#include <signal.h>
#include <stdio.h>

int main ()
{
  sigset_t set;
  int ret;

  sigemptyset (&set);
  sigaddset (&set, SIGINT);

  ret = sigprocmask (1729, &set, NULL);
  if (ret == 0)
    printf ("sigprocmask succeeded!\n");
  else
    printf ("sigprocmask -> %d, errno=%d\n", ret, errno);

  ret = pthread_sigmask (1729, &set, NULL);
  if (ret == 0)
    printf ("pthread_sigmask succeeded!\n");
  else
    printf ("pthread_sigmask -> %d\n", ret);

  return 0;
}
=============================================
$ gcc -Wall foo.c
$ ./a.out

Expected output:
sigprocmask -> -1, errno=22
pthread_sigmask -> 22

Actual output:
sigprocmask -> -1, errno=22
pthread_sigmask -> -1

>Fix:

Reply via email to