[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#45202: pcscd service (pcsc-lite) doesn't handle run directory proper
From: |
Raffael Stocker |
Subject: |
bug#45202: pcscd service (pcsc-lite) doesn't handle run directory properly |
Date: |
Mon, 14 Dec 2020 06:54:47 +0100 |
User-agent: |
mu4e 1.4.13; emacs 27.1 |
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