Re: Add errdetail() with PID and UID about source of termination signal

From: Jakub Wartak <jakub(dot)wartak(at)enterprisedb(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Andrew Dunstan <andrew(at)dunslane(dot)net>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Jim Jones <jim(dot)jones(at)uni-muenster(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Add errdetail() with PID and UID about source of termination signal
Date: 2026-04-16 06:08:06
Message-ID: CAKZiRmz=FgFk+ueVxOEqC+kGuJpNWvp6VYOV16oM7Bndwe1mDw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Apr 15, 2026 at 8:49 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> Andrew Dunstan <andrew(at)dunslane(dot)net> writes:
> > On 2026-04-15 We 12:04 PM, Tom Lane wrote:
> >> As a short-term fix, we could just go back to allowing the regex to
> >> consider the match optional.
>
> > Ok, so we can get the buildfarm green I'll go and do that. But I think
> > we should have an open item to tighten the test.
>
> I did some more digging, and got this from Google's AI Mode:
>
> -----
> openbsd does not fill siginfo_t si_pid for SIGTERM
>
> On OpenBSD, si_pid is indeed not guaranteed to be filled for SIGTERM
> (and many other signals), even when using SA_SIGINFO. This is a known
> architectural behavior of the OpenBSD kernel rather than a bug.
>
> Why si_pid is zero or empty
>
> Minimalist Kernel Design: Unlike Linux, which often populates si_pid
> and si_uid for most user-sent signals, the OpenBSD kernel only
> guarantees these fields for specific signals where they are
> functionally required by POSIX, such as SIGCHLD.
>
> Security & Information Leakage: OpenBSD has a history of limiting
> information available across process boundaries to prevent
> side-channel attacks or unnecessary information leaks about other
> processes on the system [0.31].
>
> Signal Queueing: Standard signals like SIGTERM are not "queued" with
> data in the same way real-time signals (which OpenBSD does not fully
> support in the same manner as Linux) would be.
> -----
>
> Now, none of the links it provided in support of these claims say
> any such thing AFAICS, so maybe this is all an AI hallucination.
> We could probably look into the OpenBSD kernel to check it, if we
> were sufficiently motivated. But I'm inclined to believe it and
> just say "this info is not available on all platforms, even some
> that HAVE_SA_SIGINFO".

Hi Tom,

It seems to be not a hallucination: it appears that they do initsiginfo() [1]
which zeros out struct siginfo_t without setting si_pid there. The
only reference about si_pid is that their waitid(2) fills it properly
and that's visibile in their dowait*() kernel-side implementation
too.

-J.

[1] - https://github.com/openbsd/src/blob/master/sys/kern/kern_sig.c#L2166

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Jakub Wartak 2026-04-16 06:09:43 Re: Add errdetail() with PID and UID about source of termination signal
Previous Message Soumya S Murali 2026-04-16 05:56:09 Re: Fix bug with accessing to temporary tables of other sessions