US-III crashes on current

Florian Smeets flo at kasimir.com
Tue Apr 21 19:15:36 UTC 2009


On 21.04.09 20:58, Marius Strobl wrote:
> On Tue, Apr 21, 2009 at 01:45:27AM +0200, Florian Smeets wrote:
>>
>> Yes, i can still reproduce this on every shutdown. Tried with r191337.
>> Trace is still the same.
>>
>
> Could you please run gdb(1) on the corresponding kernel.debug
> and report the output of the following commands?
> l *(0xc034c96c)
> l *(callout_lock+0x40)
> Change as needed if the addresses differ from the above
> backtrace. Hrm, the one you reported to scsi@ actually
> is a bit different:
>> -- fast data access mmu miss tar=0x1454156000 %o7=0xc040e7a4 --
>> _mtx_lock_spin_flags() at _mtx_lock_spin_flags+0x5c
>> callout_lock() at callout_lock+0x50
>
> In that case please additionally get the output of
> l *(_mtx_lock_spin_flags+0x5c)
>

OK, to get this straight this is the trace I'm talking about.

Uptime: 19h19m49s
panic: trap: fast data access mmu miss
cpuid = 0
KDB: enter: panic
[thread pid 97473 tid 100179 ]
Stopped at      kdb_enter+0x80: ta              %xcc, 1
db> where
Tracing pid 97473 tid 100179 td 0xfffff80006dfc370
panic() at panic+0x20c
trap() at trap+0x4d0
-- fast data access mmu miss tar=0x20007e000 %o7=0xc03f70a4 --
callout_lock() at callout_lock+0x20
untimeout() at untimeout+0xc
isp_done() at isp_done+0x140
isp_intr() at isp_intr+0x3eb8
isp_poll() at isp_poll+0x38
xpt_polled_action() at xpt_polled_action+0xc8
dashutdown() at dashutdown+0x16c
boot() at boot+0x850
reboot() at reboot+0x64
syscall() at syscall+0x2b4
-- syscall (55, FreeBSD ELF64, reboot) %o7=0x1013e4 --
userland() at 0x40564948
user trace: trap %o7=0x1013e4
pc 0x40564948, sp 0x7fdffffe201
pc 0x100df0, sp 0x7fdffffe2c1
pc 0x40206954, sp 0x7fdffffe381
done

(gdb) l *(0xc03f70a4)
0xc03f70a4 is in spinlock_exit (/usr/src/sys/sparc64/sparc64/machdep.c:232).
227	spinlock_exit(void)
228	{
229		struct thread *td;
230	
231		td = curthread;
232		critical_exit();
233		td->td_md.md_spinlock_count--;
234		if (td->td_md.md_spinlock_count == 0)
235			wrpr(pil, td->td_md.md_saved_pil, 0);
236	}
(gdb) l *(callout_lock+0x20)
0xc0225000 is in callout_lock (/usr/src/sys/kern/kern_timeout.c:270).
265	{
266		struct callout_cpu *cc;
267		int cpu;
268	
269		for (;;) {
270			cpu = c->c_cpu;
271			cc = CC_CPU(cpu);
272			CC_LOCK(cc);
273			if (cpu == c->c_cpu)
274				break;


I had witness in my kernel when i reported this to scsi, i don't have 
that turned on right now, so perhaps this is why the other trace 
included _mtx_lock_spin_flags, it's not in the trace now but if i run 
the command you requested i get something non the less.

(gdb) l *(_mtx_lock_spin_flags+0x5c)
0xc01ff2bc is in _mtx_lock_spin_flags (/usr/src/sys/kern/kern_mutex.c:225).
220			KASSERT((m->lock_object.lo_flags & LO_RECURSABLE) != 0,
221		    ("mtx_lock_spin: recursed on non-recursive mutex %s @ %s:%d\n",
222			    m->lock_object.lo_name, file, line));
223		WITNESS_CHECKORDER(&m->lock_object, opts | LOP_NEWORDER | 
LOP_EXCLUSIVE,
224		    file, line, NULL);
225		_get_spin_lock(m, curthread, opts, file, line);
226		LOCK_LOG_LOCK("LOCK", &m->lock_object, opts, m->mtx_recurse, file,
227		    line);
228		WITNESS_LOCK(&m->lock_object, opts | LOP_EXCLUSIVE, file, line);
229	}

Thanks for looking at this!

Cheers,
Florian


More information about the freebsd-sparc64 mailing list