363680 add renameat2() support
363705 arm64 missing syscall name_to_handle_at and open_by_handle_at
363714 ppc64 missing syscalls sync, waitid and name_to/open_by_handle_at
+364413 pselect sycallwrapper mishandles NULL sigmask
n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 and amd64
n-i-bz massif --pages-as-heap=yes does not report peak caused by mmap+munmap
pas->ss.ss = (void *)1;
pas->ss.ss_len = pss->ss_len;
if (pss->ss_len == sizeof(*pss->ss)) {
- PRE_MEM_READ("pselect6(sig->ss)", (Addr)pss->ss, pss->ss_len);
- if (ML_(safe_to_deref)(pss->ss, sizeof(*pss->ss))) {
- pas->adjusted_ss = *pss->ss;
- pas->ss.ss = &pas->adjusted_ss;
- VG_(sanitize_client_sigmask)(&pas->adjusted_ss);
+ if (pss->ss == NULL) {
+ pas->ss.ss = NULL;
+ } else {
+ PRE_MEM_READ("pselect6(sig->ss)", (Addr)pss->ss, pss->ss_len);
+ if (ML_(safe_to_deref)(pss->ss, sizeof(*pss->ss))) {
+ pas->adjusted_ss = *pss->ss;
+ pas->ss.ss = &pas->adjusted_ss;
+ VG_(sanitize_client_sigmask)(&pas->adjusted_ss);
+ }
}
}
}
procfs-non-linux.stderr.exp-with-readlinkat \
procfs-non-linux.stderr.exp-without-readlinkat \
pselect_alarm.stdout.exp pselect_alarm.stderr.exp pselect_alarm.vgtest \
+ pselect_signask_null.vgtest \
+ pselect_sigmask_null.stdout.exp pselect_sigmask_null.stderr.exp \
pth_atfork1.stderr.exp pth_atfork1.stdout.exp pth_atfork1.vgtest \
pth_blockedsig.stderr.exp \
pth_blockedsig.stdout.exp pth_blockedsig.vgtest \
pending \
procfs-cmdline-exe \
pselect_alarm \
+ pselect_sigmask_null \
pth_atfork1 pth_blockedsig pth_cancel1 pth_cancel2 pth_cvsimple \
pth_empty pth_exit pth_exit2 pth_mutexspeed pth_once pth_rwlock \
pth_stackalign \
--- /dev/null
+/* Make sure handling of NULL sigmask is correct.
+ https://bugs.kde.org/show_bug.cgi?id=XXX
+ We might try to make a copy and adjust the mask.
+ Testcase provided by Paul Eggert <eggert@cs.ucla.edu> */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/select.h>
+
+int
+main (void)
+{
+ struct timespec timeout;
+ timeout.tv_sec = 1;
+ timeout.tv_nsec = 0;
+ switch (pselect (0, 0, 0, 0, &timeout, 0))
+ {
+ default:
+ abort ();
+ case -1:
+ perror ("pselect");
+ return 1;
+ case 0:
+ return 0;
+ }
+}
--- /dev/null
+prog: pselect_sigmask_null
+vgopts: -q