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

            Bug ID: 359871
           Summary: Incorrect mask handling in ppoll
           Product: valgrind
           Version: unspecified
          Platform: Other
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: jsew...@acm.org
          Reporter: so...@archy.org.uk

Created attachment 97583
  --> https://bugs.kde.org/attachment.cgi?id=97583&action=edit
Test program

The ppoll() syscall wrapper applies precisely the signal mask which the guest
asks for, which leads to deadlocks if the guest asks to block SIGVGKILL. The
attached test program shows the issue (exits after 1 second with SIGALRM if run
natively; sits until ctrl-C'd if run under Valgrind), and the attached patch
seems to fix it (against r15817).

I'm not entirely convinced that the patch is the right approach, though
(modifying the guest's copy of the sigmask when the kernel doesn't doesn't seem
like a great idea). The obvious answer, of doing the entire call in the PRE()
method and setting status to SsComplete, works even worse, though, because if
you get a signal there then fixup_guest_state_after_syscall_interrupted()
doesn't know how to deal with it.

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

Reply via email to