Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 02 Dec 2011 13:40:13 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        Attilio Rao <attilio@freebsd.org>
Cc:        freebsd-current@freebsd.org, Konstantin Belousov <kib@freebsd.org>, Andriy Gapon <avg@freebsd.org>
Subject:   Re: Stop scheduler on panic
Message-ID:  <4ED91B8D.2080808@FreeBSD.org>
In-Reply-To: <CAJ-FndCBXXGG%2BihS_rVfM5TqcopHABg80U0my9PxguYY8QBD=Q@mail.gmail.com>
References:  <20111113083215.GV50300@deviant.kiev.zoral.com.ua> <201112011349.50502.jhb@freebsd.org> <4ED7E6B0.30400@FreeBSD.org> <201112011553.34432.jhb@freebsd.org> <4ED7F4BC.3080206@FreeBSD.org> <4ED855E6.20207@FreeBSD.org> <4ED8A306.9020801@FreeBSD.org> <4ED8F1C1.7010206@FreeBSD.org> <CAJ-FndCBXXGG%2BihS_rVfM5TqcopHABg80U0my9PxguYY8QBD=Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 12/2/11 12:18 PM, Attilio Rao wrote:
> 2011/12/2 John Baldwin<jhb@freebsd.org>:
>> On 12/2/11 5:05 AM, Andriy Gapon wrote:
>>>
>>> on 02/12/2011 06:36 John Baldwin said the following:
>>>>
>>>> Ah, ok (I had thought SCHEDULER_STOPPED was going to always be true when
>>>> kdb was
>>>> active).  But I think these two changes should cover critical_exit() ok.
>>>>
>>>
>>> I attempted to start a discussion about this a few times already :-)
>>> Should we treat kdb context the same as SCHEDULER_STOPPED context (in the
>>> current definition) ?  That is, skip all locks in the same fashion?
>>> There are pros and contras.
>>
>>
>> kdb should not block on locks, no.  Most debugger commands should not go
>> near locks anyway unless they are intended to carefully modify the existing
>> system in a safe manner (such as the 'kill' command which should only be
>> using try locks and fail if it cannot safely post the signal).
>
> The biggest problem to KDB as the same as panic is that doing proper
> 'continue' is impossible.
> One of the features of the 'skip-locking' path is that it doesn't take
> into account fast locking paths, where sometimes the lock can succeed
> and other fails and you don't know about them. Also the restarted CPUs
> can find corrupted datas (as they can be arbitrarely updated), I'm
> sure it is too much panic prone.

Yes, my thought is that kdb commands, etc. should be using dedicated 
routines that do not use locks whenever possible.  The problem of a user
calling an arbitrary routine is not solvable (so I don't think we should 
try to solve that, you use 'call' at your own risk), but built-in 
commands should explicitly either 1) not use locking, or 2) only use try 
locks and fail out cleanly (including dropping any try locks acquired) 
if a try fails.  Now, that's an ideal view, I don't know how close we 
are to that in practice or if it is a realistically attainable goal.

-- 
John Baldwin



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