Re: [PATCH v4] signal: add taskfd_send_signal() syscall

Eric W. Biederman
2018-12-06T13:40:24Z

Florian Weimer <fweimer@redhat.com> writes:

> * Jürg Billeter:
>
>> On Thu, 2018-12-06 at 13:30 +0100, Florian Weimer wrote:
>>> * Christian Brauner:
>>>
>>> > /* zombies */
>>> > Zombies can be signaled just as any other process. No special error will be
>>> > reported since a zombie state is an unreliable state (cf. [3]).
>>>
>>> I still disagree with this analysis. If I know that the target process
>>> is still alive, and it is not, this is a persistent error condition
>>> which can be reliably reported. Given that someone might send SIGKILL
>>> to the process behind my back, detecting this error condition could be
>>> useful.
>>
>> As I understand it, kill() behaves the same way. I think it's good that
>> this new syscall keeps the behavior as close as possible to kill().
>
> No, kill does not behave in this way because the PID can be reused.
> The error condition is not stable there.

I am not quite certain what is being discussed here.

Posix says:
[ESRCH]
No process or process group can be found corresponding to that specified by pid.

The linux man page says:
ESRCH The process or process group does not exist. Note that an
existing process might be a zombie, a process that has terminated
execution, but has not yet been wait(2)ed for.

What happens with this new system call is exactly the linux behavior.
Success is returned until the specified process or thread group has
been waited for.

The only difference from the behavior of kill is that because the
association between the file descriptor and the pid is not affected by
pid reuse once ESRCH is returned ESRCH will always be returned.

Floriam are you seeing a problem with this behavior or the way Christian
was describing it?

Eric