Re: Fatal LOR: PV ENTRY (UMA zone) _at_ /home2/src/sys/vm/uma_core.c:2033

From: Willem Jan Withagen <wjw_at_withagen.nl>
Date: Wed, 28 Jul 2004 11:58:25 +0200
From: "Alan Cox" <alc_at_cs.rice.edu>
Subject: Re: Fatal LOR: PV ENTRY (UMA zone) _at_ /home2/src/sys/vm/uma_core.c:2033


> The lock-order reversal that precedes this panic makes little sense:
>
> lock order reversal
>  1st 0xffffff007fed7c10 PV ENTRY (UMA zone) _at_
/home2/src/sys/vm/uma_core.c:2033
>  2nd 0xffffffff8063dce0 UMA pcpu (UMA pcpu) _at_
/home2/src/sys/vm/uma_core.c:2015
>
> This corresponds to:
>
> void
> uma_zfree_arg(uma_zone_t zone, void *item, void *udata)
> {
> ...
> zfree_restart:
> cpu = PCPU_GET(cpuid);
> CPU_LOCK(cpu); *** 2nd ***
> cache = &zone->uz_cpu[cpu];
>
> zfree_start:
> bucket = cache->uc_freebucket;
>
> if (bucket) {
> /*
> * Do we have room in our bucket? It is OK for this uz count
> * check to be slightly out of sync.
> */
>
> if (bucket->ub_cnt < bucket->ub_entries) {
> KASSERT(bucket->ub_bucket[bucket->ub_cnt] == NULL,
>     ("uma_zfree: Freeing to non free bucket index."));
> bucket->ub_bucket[bucket->ub_cnt] = item;
> bucket->ub_cnt++;
> #ifdef INVARIANTS
> ZONE_LOCK(zone); *** 1st ***
> if (keg->uk_flags & UMA_ZONE_MALLOC)
> uma_dbg_free(zone, udata, item);
> else
> uma_dbg_free(zone, NULL, item);
> ZONE_UNLOCK(zone);
> #endif
> CPU_UNLOCK(cpu);
> return;

As per Alan suggestion of "faulty/bad designed" hardware, I've also ordered a
Tyan Tiger board. But the mailorder company messed the order, and now al of a
sudden they are sold out. :( So it won't be for another week that I'll get the
board. Right before I go sailing for a week.
So only after that I'll be running on new hardware....

Note that with this mornings CURRENT it does seem to survive my standard
abuse...
PREEMPTION is included with this kernel

--WjW
Received on Wed Jul 28 2004 - 07:58:30 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:03 UTC