This simple app waits for the user to hit "Ctrl+C". #include <signal.h> #include <stdio.h> int main() { sigset_t sigset; sigemptyset(&sigset); sigaddset(&sigset, SIGINT); sigprocmask(SIG_BLOCK, &sigset,NULL); int sig; int result = sigwait(&sigset, &sig); if (result != 0) { fprintf(stderr, "sigwait failed: %d\n", result); } return 0; } When run inside valgrind, sigwait returns immediately with error 78 (ENOSYS).
*** Bug 258399 has been marked as a duplicate of this bug. ***
Not sure I can easily fix this for 3.6.1. Retargetting for 3.7.0. Valgrind's signal handling implementation is tricky, and I don't have confidence that I can make a quick fix that doesn't cause a regression. Fixing it properly will require writing a comprehensive test program that exercises sigwait(). Providing a good one would help accelerate a proper fix (hint, hint).
Maybe the following test case can help: Under Mac OS X Lion, when downloading naviserver from bitbucket https://bitbucket.org/naviserver/naviserver/overview or sourceforge http://sourceforge.net/projects/naviserver/files/naviserver/4.99.4/ and running after usual "configure,.... make...." sermon make memcheck you will see the following output from valgrind. Notice that "ns_sigwait" is the signal handler implemented by naviserver. 09/Mar/2012:11:07:37][18848.30e960][-main-] Notice: nsmain: security info: uid=501, euid=501, gid=501, egid=501 --18848-- WARNING: unhandled syscall: unix:330 --18848-- You may be able to write your own handler. --18848-- Read the file README_MISSING_SYSCALL_OR_IOCTL. --18848-- Nevertheless we consider this a bug. Please report --18848-- it at http://valgrind.org/support/bug_reports.html. [09/Mar/2012:11:07:37][18848.30e960][-main-] Fatal: signal: ns_sigwait failed: Function not implemented [09/Mar/2012:11:07:37][18848.b028d000][-sched-] Notice: sched: starting --18848:0:schedule VG_(sema_down): read returned -4
Any updates on this bug?
If nothing else don't printout the warning message a million times a second. One only needs to be told *once* that a system call is not supported.
*** Bug 353346 has been marked as a duplicate of this bug. ***
I tried copying the FreeBSD implementation but the regtest that I added fails. The sigwait part seems OK but it's the simple bit at the beginning that is just doing signal()/raise() that is failing.