Current-Users archive

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

Early amd64 LOCKDEBUG panic ?



Hi,

With up-to-date sources, i do see an early LOCKDEBUG panic at boot on
my main amd64 developpement machine:

>> NetBSD/x86 BIOS Boot,Revision 5.9 (from NetBSD 5.99.53)
>> Memory: 590/3012096 k
Press return to boot now,any other key for boot menu
booting hd0a:netbsd - starting in 0 seconds.     
12300928+631912+709368 [794616+533978]=0xf48520
Loading /stand/amd64/5.99.61/modules/ffs/ffs.kmod  
panic: lockdebug_lookup: uninitialized lock 
(lock=0xffffffff80ee9ee0,from=ffffffff8071d462)

Anyone else ?

Thanks.

NB: Same applies for RUMP_LOCKDEBUG=yes rump binaries ... a simple
rump_init() call is enough to trigger it.

njoly@lanfeust [rump/misc]> cat rump_init.c 

#include <err.h>

#include <rump/rump.h>

int main() {
  int res;

  res = rump_init();
  if (res != 0)
    err(1,"rump_init failed");

  return 0; }

njoly@lanfeust [rump/misc]> make rump_init
cc -pthread -g -Wall -Werror   -lrumpvfs -lrump -o rump_init rump_init.c 

njoly@lanfeust [rump/misc]> ./rump_init 
panic: lockdebug_lookup: uninitialized lock 
(lock=0x7f7ff76c9da0,from=7f7ff7454151)
rump kernel halting...
zsh: segmentation fault (core dumped)  ./rump_init

njoly@lanfeust [rump/misc]> gdb ./rump_init rump_init.core
GNU gdb (GDB) 7.3.1
[...]
Core was generated by `rump_init'.
Program terminated with signal 11,Segmentation fault.
#0  0x00007f7ff74864c9 in cpu_reboot (howto=4,bootstr=<optimized out>)
    at 
/local/src/NetBSD/src/lib/librump/../../sys/rump/librump/rumpkern/rump.c:525
525             if (!RUMP_LOCALPROC_P(curproc))
(gdb) bt
#0  0x00007f7ff74864c9 in cpu_reboot (howto=4,bootstr=<optimized out>)
    at 
/local/src/NetBSD/src/lib/librump/../../sys/rump/librump/rumpkern/rump.c:525
#1  0x00007f7ff745f19e in vpanic (fmt=0x7f7ff748f2e8 "lockdebug_lookup: 
uninitialized lock (lock=%p,from=%08lx)",
    ap=0x7f7fffffd640) at 
/local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_prf.c:308
#2  0x00007f7ff745f2a3 in panic (fmt=0x1 <Address 0x1 out of bounds>)
    at /local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_prf.c:205
#3  0x00007f7ff744c97f in lockdebug_lookup 
(where=140187586085201,lock=0x7f7ff76c9da0)
    at 
/local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_lockdebug.c:195
#4  lockdebug_wantlock 
(lock=0x7f7ff76c9da0,where=140187586085201,shared=false,trylock=false)
    at 
/local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_lockdebug.c:430
#5  0x00007f7ff7482c7e in mutex_enter (mtx=0x7f7ff76c9da0)
    at 
/local/src/NetBSD/src/lib/librump/../../sys/rump/librump/rumpkern/locks.c:112
#6  0x00007f7ff7454151 in pool_cache_bootstrap_destroy (pc=<optimized out>)
    at /local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_pool.c:2077
#7  0x00007f7ff74505d9 in qc_init (ipl=6,qcache_max=<optimized 
out>,vm=0x7f7ff76bd9c8)
    at /local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_vmem.c:676
#8  vmem_create_internal (name=<optimized out>,base=0,size=0,quantum=<optimized 
out>,importfn=<optimized out>,
    releasefn=<optimized 
out>,arg=0x7f7ff76bf2a0,qcache_max=131072,flags=65538,ipl=6)
    at /local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_vmem.c:1011
#9  0x00007f7ff74836a2 in uvm_init () at 
/local/src/NetBSD/src/lib/librump/../../sys/rump/librump/rumpkern/vm.c:340
#10 0x00007f7ff74869e1 in rump__init (rump_version=<optimized out>)
    at 
/local/src/NetBSD/src/lib/librump/../../sys/rump/librump/rumpkern/rump.c:296
#11 0x0000000000400a22 in main () at rump_init.c:9
(gdb) frame 6
#6  0x00007f7ff7454151 in pool_cache_bootstrap_destroy (pc=<optimized out>)
    at /local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_pool.c:2077
2077            mutex_enter(&pool_head_lock);
(gdb) p &pool_head_lock
$1 = (kmutex_t *) 0x7f7ff76c9da0
(gdb) l *(0x7f7ff7454151)
0x7f7ff7454151 is in pool_cache_bootstrap_destroy 
(/local/src/NetBSD/src/lib/librump/../../sys/rump/../kern/subr_pool.c:2078).
2073            struct pool *pp = &pc->pc_pool;
2074            u_int i;
2075    
2076            /* Remove it from the global list. */
2077            mutex_enter(&pool_head_lock);
2078            while (pc->pc_refcnt != 0)
2079                    cv_wait(&pool_busy,&pool_head_lock);
2080            TAILQ_REMOVE(&pool_cache_head,pc,pc_cachelist);
2081            mutex_exit(&pool_head_lock);
2082    


-- 
Nicolas Joly

Projects and Developments in Bioinformatics
Institut Pasteur, Paris.


Home | Main Index | Thread Index | Old Index