BTW, this is another occurance of the same failure condition:

You did not build a full snapshot!

This diff is old enough there was lots of time to build a snapshot
with it.

Vitaliy Makkoveev <o...@bsdbox.dev> wrote:

> Sorry about that. Please give me 5 min to fix it.
> 
> > On 11 Aug 2024, at 23:46, Theo Buehler <t...@theobuehler.org> wrote:
> > 
> > On Sun, Aug 11, 2024 at 09:10:53AM -0600, Vitaliy Makkoveev wrote:
> >> CVSROOT:   /cvs
> >> Module name:       src
> >> Changes by:        m...@cvs.openbsd.org    2024/08/11 09:10:53
> >> 
> >> Modified files:
> >>    sys/kern       : kern_exit.c kern_fork.c kern_sysctl.c 
> >>    sys/sys        : proc.h 
> >> 
> >> Log message:
> >> Make exit1() wait sysctl(2) `allprocess' loops.
> >> 
> >> Regardless on wired userland memory, KERN_FILE_BYPID and KERN_FILE_BYUID
> >> `allprocess' loops have netlock provided sleep points, so concurrent
> >> process exit(1) could crash kernel.
> >> 
> >> The main exit1() problem is that process teardown begins while process
> >> is still linked to `allprocess' list, and current code doesn't allow to
> >> unlink it first. Wait for concurrent sysctl(2) `allprocess' loops
> >> between PS_EXITING bit setting and list unlinking. Both KERN_FILE_BYPID
> >> and KERN_FILE_BYUID loops do PS_EXITING check and won't deal with dying
> >> process. Concurrent exit1() thread will wait loops keeping process
> >> linked to `allprocess' list.
> >> 
> >> Tested with i386 dpb(1) run.
> >> Stress tests and ok bluhm.
> >> 
> > 
> > libkvm fails to build with this diff because userland doesn't know about
> > struct refcount:
> > 
> > cc -O2 -pipe -g -D_LIBKVM  -MD -MP  -c /usr/src/lib/libkvm/kvm_proc.c -o
> > kvm_proc.o
> > In file included from /usr/src/lib/libkvm/kvm_proc.c:76:
> > /usr/include/sys/proc.h:145:16: error: field has incomplete type 'struct 
> > refcnt'
> >        struct refcnt ps_refcnt;
> >                           ^
> 

Reply via email to