fixed crash in new rsyscall (failure to set sa_flags for signal handler)
[musl] / src / thread / __rsyscall.c
index 923db2b..61d41df 100644 (file)
@@ -61,12 +61,14 @@ int __rsyscall(int nr, long a, long b, long c, long d, long e, long f)
 
        if (!rs.init) {
                struct sigaction sa = {
+                       .sa_flags = SA_SIGINFO | SA_RESTART,
                        .sa_sigaction = rsyscall_handler,
                        .sa_mask = set
                };
                sigfillset(&sa.sa_mask);
                sa.sa_sigaction = rsyscall_handler;
                __libc_sigaction(SIGSYSCALL, &sa, 0);
+               rs.init = 1;
        }
 
        rs.nr = nr;