NetBSD-Bugs archive

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

Re: port-amd64/39283: Kernel crash on Dell Poweredge 2950



Hello,

Tobias Nygren <tnn%NetBSD.org@localhost> wrote:
> ...
>  cv_wait() at netbsd:cv_wait+0x144
>  xc_wait() at netbsd:xc_wait+0x44
>  pool_cache_invalidate() at netbsd:pool_cache_invalidate+0xea
>  pool_reclaim() at netbsd:pool_reclaim+0x65
>  pool_reclaim_callback() at netbsd:pool_reclaim_callback+0x22
>  callback_run_roundrobin() at netbsd:callback_run_roundrobin+0x57
>  uvm_map_prepare() at netbsd:uvm_map_prepare+0x190
>  uvm_map() at netbsd:uvm_map+0xbb
>  km_vacache_alloc() at netbsd:km_vacache_alloc+0x4e
>  pool_grow() at netbsd:pool_grow+0x38
>  pool_get() at netbsd:pool_get+0x66
>  uvm_km_alloc_poolpage_cache() at netbsd:uvm_km_alloc_poolpage_cache+0x40
>  pool_grow() at netbsd:pool_grow+0x38
>  pool_get() at netbsd:pool_get+0x66
>  tcp_newtcpcb() at netbsd:tcp_newtcpcb+0x29
> ...

It is a recent regression in -current.  Please try attached workaround, which
disables draining of per-CPU caches (it is safe, since nothing yet depends on
this behaviour).  I will look for a proper fix.

-- 
Mindaugas
Index: subr_pool.c
===================================================================
RCS file: /cvsroot/src/sys/kern/subr_pool.c,v
retrieving revision 1.177
diff -u -p -r1.177 subr_pool.c
--- subr_pool.c 20 Oct 2009 17:24:22 -0000      1.177
+++ subr_pool.c 2 Dec 2009 04:22:01 -0000
@@ -2298,6 +2298,7 @@ void
 pool_cache_invalidate(pool_cache_t pc)
 {
        pcg_t *full, *empty, *part;
+#if 0
        uint64_t where;
 
        if (ncpu < 2 || !mp_online) {
@@ -2316,6 +2317,7 @@ pool_cache_invalidate(pool_cache_t pc)
                where = xc_broadcast(0, (xcfunc_t)pool_cache_xcall, pc, NULL);
                xc_wait(where);
        }
+#endif
 
        mutex_enter(&pc->pc_lock);
        full = pc->pc_fullgroups;



Home | Main Index | Thread Index | Old Index