Download raw body.
Bump buffer size in pkill's getargv() function
Kind reminder.
On Fri, Feb 27, 2026 at 01:46:52PM +0000, Mikolaj Kucharski wrote:
> Hi,
>
> I am facing a problem with pgrep'ing Java daemon, which has long list of
> arguments.
>
> Current situation is:
>
> # rcctl check signal_daemon
> signal_daemon(failed)
>
> # pgrep -lf java | wc -c
> 2540
>
> As you can see, that list of arguments is longer than _POSIX2_LINE_MAX
> which is currently used by pkill / pgrep command.
>
> $ getconf _POSIX2_LINE_MAX
> 2048
>
> With following pexp defined:
>
> # grep -w pexp /etc/rc.d/signal_daemon
> pexp="${JAVA}.* org.asamk.signal.Main daemon${daemon_flags:+ ${daemon_flags}}"
>
> the regex is not able to match very end of the Java arguments, because
> the buffer is too small.
>
> I am bumping the buffer to:
>
> $ getconf _POSIX_ARG_MAX
> 4096
>
> which makes rc.d(8) script work:
>
> # rcctl check signal_daemon
> signal_daemon(ok)
>
> This is minimal diff, to make things good enough.
>
>
> diff --git usr.bin/pkill/pkill.c usr.bin/pkill/pkill.c
> index c9ed8cc9e3b..7b3471d1c83 100644
> --- usr.bin/pkill/pkill.c
> +++ usr.bin/pkill/pkill.c
> @@ -113,7 +113,7 @@ extern char *__progname;
> static char *
> getargv(struct kinfo_proc *kp)
> {
> - static char buf[_POSIX2_LINE_MAX];
> + static char buf[_POSIX_ARG_MAX];
> char **pargv;
> size_t j;
>
>
--
Regards,
Mikolaj
Bump buffer size in pkill's getargv() function