On Fri, Jun 02, 2023 at 06:39:32PM +0200, Paul de Weerd wrote:
> Hi all,
>
> On my APUs I'm seeing "Process (pid 1) got signal 31" just before the
> init starts /etc/rc. I booted single user and see it there too:
>
> > softraid0 at root
> > scsibus3 at softraid0: 256 targets
> > root on sd0a (425cdd38685451a6.a) swap on sd0b dump on sd0b
> > Process (pid 1) got signal 31
> > Enter pathname of shell or RETURN for sh:
>
> Searching the internet reveals this is a recurring theme amongst APU2
> owners (there's a few dmesg's in various OpenBSD mailinglist archives
> that have this, all the ones I checked are for APU2's).
>
> The message comes from kern/kern_sig.c:
>
> if (pr->ps_pid <= 1) {
> #ifdef DIAGNOSTIC
> /*
> * Are you sure you want to ignore SIGSEGV
> * in init? XXX
> */
> printf("Process (pid %d) got signal"
> " %d\n", pr->ps_pid, signum);
> #endif
> break; /* == ignore */
> }
>
> (and conf/GENERIC defines DIAGNOSTIC). I'm curious why I (and others)
> see this on APU2, but not on other systems. I'm guessing it's the
> kernel sending this signal to init to power down, but I don't
> understand why or where. Is there a way to identify the source of the
> signal?
>
> Sending the signal from userland has the documented effect of powering
> down the machine (of course).
The problem here is that this signal is sent before init installed its
signal handlers. So this is ultra early.
Now I think there are two places where this can be triggered:
dev/acpi/acpi.c: prsignal(initprocess, SIGUSR2);
dev/acpi/acpitz.c: prsignal(initprocess, SIGUSR2);
I would add some debug printf() in both places and see which one triggers.
--
:wq Claudio