#1131986 procps: [kill] PGID parsed as signal after '--' option delimiter

Package:
procps
Source:
procps
Description:
/proc file system utilities
Submitter:
Harold Bruintjes
Date:
2026-10-08 06:07:01 UTC
Severity:
normal
Tags:
#1131986#5
Date:
2026-03-26 15:27:02 UTC
From:
To:
Dear Maintainer,

According to the man page for kill it should parse any argument after `--` as pid|name, however running

/bin/kill -- -4

displays the usage output, as it parses the -4 as a signal number, and is missing a PID argument. This may occur when attempting to kill a process group inside a container, e.g.,

unshare -Ufp
setsid -w sleep 30 &
/bin/kill -- -$!

I would expect this to kill the group with the sleep process, but this displays the usage output. Instead, running

/bin/kill -- -TERM -$!

works as you would expect.

This issue does not occur if the PGID is above 93, since that is no longer interpreted as a signal.

This does not seem related to the patch handling negative PIDs before the `--` occurs.

#1131986#8
Date:
2026-10-08 06:05:29 UTC
From:
To:
Hi,

this sounds like this upstream bug:
https://gitlab.com/procps-ng/procps/-/work_items/437

I think this upstream commit may have broken it: ac89d63c

I used to run:

    $ /bin/kill --signal INT -- "-$pgid"

And for now, as a workaround, I am now running:

    $ /bin/kill -INT "-$pgid"

What I originally had used two well-known conventions when passing options to
CLI tools:

 * long option names (for readability) with option arguments instead of long
   options starting with a single dash-only.
 * separating positional from non-positional arguments with a double-dash to
   avoid interpreting positional options starting with a dash as non-positional

This interface used to work before ac89d63c, so I'd call this a regression.
Reading the commit message it was probably not intentional?

Thanks!

cheers, josch