Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Mar 2005 08:10:56 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        David Xu <davidxu@FreeBSD.org>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/kern kern_sig.c
Message-ID:  <61ac46c154aa515a692308440dd1141d@FreeBSD.org>
In-Reply-To: <4226446B.7020406@freebsd.org>
References:  <200503021343.j22DhpQ3075008@repoman.freebsd.org> <200503020915.28512.jhb@FreeBSD.org> <4226446B.7020406@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Mar 2, 2005, at 5:55 PM, David Xu wrote:

> John Baldwin wrote:
>
>> On Wednesday 02 March 2005 08:43 am, David Xu wrote:
>>
>>> davidxu     2005-03-02 13:43:51 UTC
>>>
>>>  FreeBSD src repository
>>>
>>>  Modified files:
>>>    sys/kern             kern_sig.c
>>>  Log:
>>>  In kern_sigtimedwait, remove waitset bits for td_sigmask before
>>>  sleeping, so in do_tdsignal, we no longer need to test td_waitset.
>>>  now td_waitset is only used to give a thread higher priority when
>>>  delivering signal to multithreads process.
>>>  This also fixes a bug:
>>>  when a thread in sigwait states was suspended and later resumed
>>>  by SIGCONT, it can no longer receive signals belong to waitset.
>>>
>>
>> Is this related at all to Peter Holm's panic where sigwait() + 
>> swapping invokes a panic?
>>
>>
> No. Peter Holm's found is a swapping problem. vm swaps out sleeping
> thread's stack under memory stressing case. but I think that's not 
> safe,
> that means, following code can not be used in kernel:
>
> int *p;
>
> func()
> {
>    int n;
>
>    n = 0;
>    p = &n;
>    msleep(p);
>    /* check variable n ...
> }
>
> func2()
> {
>   *p = 2;
>   wakeup(p);
> }
>
> unless million lines of kernel code are reviewed, I don't think the
> vm code is safe. The following patch should avoid the problem:

Note that swapping out the stack is the default behavior in 4.x, so
I actually think that the million lines of kernel code are indeed
safe, only sigwait() is broken and should be fixed. :)

-- 

John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?61ac46c154aa515a692308440dd1141d>