DragonFly bugs List (threaded) for 2007-10
DragonFly BSD
DragonFly bugs List (threaded) for 2007-10
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: kernel panic on HEAD from Oct. 4th sources

From: "Nicolas Thery" <nthery@xxxxxxxxx>
Date: Sun, 21 Oct 2007 13:46:56 +0200

2007/10/17, Matthew Dillon <dillon@apollo.backplane.com>:
>     Yes, kinfo_proc can race against an exiting process.  An exiting process
>     will be in a partially deallocated state and p_pgrp could very well be
>     NULL as of the moment kinfo_proc tries to access it.

I'm trying to understand exactly how this race occurs and I've got a few
questions about preemption.  Could you confirm/infirm the following please?

1/ On a UP system, there can be at most one non-sleeping thread running
kernel-side and this thread can be preempted if and only if it explicitly
relinquishes the cpu, for example by calling tsleep().

2/ On a MP system, several threads can run kernel-side concurrently (one per
cpu) as long as the MP lock is not held.

3/ The MP lock is taken automatically when executing syscalls not tagged with
SYF_MPSAFE in sysent[].

4/ sysctl() kernel-side entry point is sys____sysctl() which is not MP safe.

5/ The race condition occurs if the call to vm_waitproc() in kern_wait() blocks
and another thread enters the kernel to handle a sysctl() call.

Thanks in advance,

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]