GNU bug report logs -
#41507
[PATCH Shepherd 0/2] Use 'signalfd' on GNU/Linux
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Sun, 24 May 2020 14:28:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #31 received at 41507-done <at> debbugs.gnu.org (full text, mbox):
Hi!
Mathieu Othacehe <othacehe <at> gnu.org> skribis:
>> + (lambda args
>> + (if (= ENOSYS (system-error-errno args))
>> + #f
>> + (apply throw args)))))
>
> Maybe:
>
> (and (= ENOSYS (system-error-errno args))
> (apply throw args))
It’s not equivalent. :-)
>> +(define (handle-signal-port port)
>> + "Read from PORT, a signalfd port, and handle the signal accordingly."
>> + (let ((signal (consume-signalfd-siginfo port)))
>> + (cond ((= signal SIGCHLD)
>> + (handle-SIGCHLD))
>> + ((= signal SIGINT)
>> + (catch 'quit
>> + (lambda ()
>> + (stop root-service))
>> + quit-exception-handler))
>
> Maybe we should create a handle-SIGINT, to make sure that the same code
> is shared with the sigaction handler?
Good idea, done!
>> + (begin
>> + ;; Unblock any signals that might have been blocked by the parent
>> + ;; process.
>> + (unblock-signals (list SIGCHLD SIGINT SIGHUP SIGTERM))
>
> This made me realize that we may want to disable/reset SIGINT and
> SIGHUP, in the same way that we do for SIGTERM? This is not related to
> your patch anyway.
Right, I’ll let you look into it if that’s fine with you.
> You could also extend the comment to say that it is only necessary if
> using the signalfd mechanism (because signals are not blocked
> otherwise).
Done.
I did:
make dist
guix build shepherd --with-source=shepherd-0.8.0.tar.gz \
-s x86_64-linux -s i686-linux -s armhf-linux -s aarch64-linux
guix build shepherd --with-source=shepherd-0.8.0.tar.gz \
--target=i586-pc-gnu
and it all passes.
Janneke, could you check that it works on GNU/Hurd?
Ludo’.
This bug report was last modified 4 years and 350 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.