412344 Problem setting mips flags with specific paths
413330 avx-1 test fails on AMD EPYC 7401P 24-Core Processor
413603 callgrind_annotate/cg_annotate truncate function names at '#'
+414565 Specific use case bug found in SysRes VG_(do_sys_sigprocmask)
n-i-bz Fix minor one time leaks in dhat.
n-i-bz Add --run-cxx-freeres=no in outer args to avoid inner crashes.
vki_sigset_t* set,
vki_sigset_t* oldset )
{
- switch(how) {
- case VKI_SIG_BLOCK:
- case VKI_SIG_UNBLOCK:
- case VKI_SIG_SETMASK:
- vg_assert(VG_(is_valid_tid)(tid));
- do_setmask ( tid, how, set, oldset );
- return VG_(mk_SysRes_Success)( 0 );
+ /* Fix for case when ,,set,, is NULL.
+ In this case ,,how,, flag should be ignored
+ because we are only requesting from kernel
+ to put current mask into ,,oldset,,.
+ Taken from linux man pages (sigprocmask).
+ The same is specified for POSIX.
+ */
+ if (set != NULL) {
+ switch(how) {
+ case VKI_SIG_BLOCK:
+ case VKI_SIG_UNBLOCK:
+ case VKI_SIG_SETMASK:
+ break;
- default:
- VG_(dmsg)("sigprocmask: unknown 'how' field %d\n", how);
- return VG_(mk_SysRes_Error)( VKI_EINVAL );
+ default:
+ VG_(dmsg)("sigprocmask: unknown 'how' field %d\n", how);
+ return VG_(mk_SysRes_Error)( VKI_EINVAL );
+ }
}
+
+ vg_assert(VG_(is_valid_tid)(tid));
+ do_setmask(tid, how, set, oldset);
+ return VG_(mk_SysRes_Success)( 0 );
}