https://bugs.kde.org/show_bug.cgi?id=372504

--- Comment #25 from Philippe Waroquiers <philippe.waroqui...@skynet.be> ---
Looking in m_signals.c : it looks like some special support
for sigsuspend/rt_sigsuspend is supported to be done, e.g. using
tmp_sig_mast. See a.o. the following comments in m_signals.c:2012

      /* At this point:
         tst->sig_mask is the current signal mask
         tst->tmp_sig_mask is the same as sig_mask, unless we're in sigsuspend
and the declaration of tmp_sig_mask in pub_core_threadstate.h

However, in syswrap-linux.c PRE(sys_rt_sigsuspend) (and in the various
duplicated PRE(sys_sigsuspened) in syswrap-<platforms>-linux.c
and in syswrap-darwin.c, I see nothing that seems to activate
such a 'special' sigsuspend plan.
It looks like the syscall is just called, without e.g. (at least) removing
VKI_SIGVGKILL from the set of masked signals.

To the contrary, PRE(sys_sigprocmask) is calling
VG_(do_sys_sigprocmask), which calls do_setmask,
which touches the thread state sig_mask (later on used 
by syswrap-main.c when really executing a client syscall).

So, it looks like we minimum need to remove VKI_SIGVGKILL from the
masked signals when calling sigsuspend. Or maybe we really need
a cunning plan with tmp_sig_mask etc for sigsuspend ?

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to