Current-Users archive

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

Re: Kernel panic in "subr_xcall.c"



On Mon, 19 Oct 2009 09:05:43 +0100, Matthias Scheler 
<tron%zhadum.org.uk@localhost>
wrote:
> On Mon, Oct 19, 2009 at 07:28:26AM +0100, Matthias Scheler wrote:
>> Here is the stack trace of the panic (copied of the console):
>> 
>> xc_lowpri
>> pool_cache_invalidate
>> pmap_growkernel
>> 
>> I wonder whether it is related this change:
>> 
>> http://mail-index.netbsd.org/source-changes/2009/10/15/msg001938.html
> 
> Ok, I think I found the problem:
> 
> 1.) pool_cache_invalidate() calls xc_broadcast() with ci = NULL.
> 2.) xc_broadcast() calls xc_lowpri() with ci = NULL.
> 3.) xc_lowpri() iterates over all CPUs but doesn't fine any
>     running CPU and therefore doesn't schedule any cross calls.
> 4.) The KASSERT() at the end of loop in xc_lowpri() triggers
>     because "xc_tailp" and "xc_headp" are both zero.

Looks like we hit the same problem:

http://mail-index.netbsd.org/tech-kern/2009/10/14/msg006268.html

Apparently, the check against ncpu is not enough, the kernel ends calling
pmap_growkernel() with ncpu > 1 but without any CPU considered as "running"
(SPCF_RUNNING flag set).

Which element in the boot process requires a call to pmap_growkernel()
early during boot? (full stack trace if possible).

-- 
Jean-Yves Migeon
jeanyves.migeon%free.fr@localhost




Home | Main Index | Thread Index | Old Index