Tobias Geerinckx-Rice writes:
>> However, I now noticed a new one: pcscd doesn't seem to be killable >> easily (at least not by a TERM signal), so "herd stop pcscd" has >> no effect. Sending a KILL signal and starting with "herd start pcscd" >> works without problems, though. > > I can reproduce this. Interestingly(?) it only affects the pcscd started by > Shepherd. > > Manual $(guix build pcsc-lite)/sbin/pcscd invocations, both with and without > --foreground, are eminently killable with TERM alone. Interesting indeed. From looking at the source of pcsc-lite (main() in pcscdaemon.c) it seems it's not modifying its sigmask. IIRC, child processes inherit the parent's ignored signals, so if shepherd is ignoring SIGTERM before a fork() and not resetting to default before an exec(), pcscd will never receive the SIGTERM. This might explain the behaviour. I have not checked shepherd's source to confirm. If this is so, it should probably be fixed in shepherd, right? Regards, Raffael
