Port-arm archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Kernel panic when rebooting NSLU2
I get the following error message on the NSLU2 serial port when I use
the reboot command on the command line after connecting to the NSLU2
through ssh:
Mar 9 11:12:55 slug reboot: rebooted by hayford
Mar 9 11:12:55 reboot: rebooted by hayford
Mar 9 11:12:55 slug syslogd: Exiting on signal 15
boot: howto=00000000 curproc=0xc2ecbbb8
syncing disks... done
unmounting file systems...
unmounting / (/dev/sd1a)... done
panic: kernel diagnostic assertion "(l->l_pflag & LP_INTR) == 0" failed:
file "/home/hayford/net/src/sys/kern/kern_synch.c", line 169
Stopped in pid 0.3 (system) at netbsd:cpu_Debugger+0x4: bx r14
db>
If I type reboot at the debugger prompt the system reboots as expected,
but you can only do that with a serial port. Otherwise, you can reset
the NSLU2 by cycling power.
The offending code seems to be:
int
ltsleep(wchan_t ident, pri_t priority, const char *wmesg, int timo,
volatile struct simplelock *interlock)
{
struct lwp *l = curlwp;
sleepq_t *sq;
int error;
169>> KASSERT((l->l_pflag & LP_INTR) == 0);
if (sleepq_dontsleep(l)) {
(void)sleepq_abort(NULL, 0);
if ((priority & PNORELOCK) != 0)
simple_unlock(interlock);
return 0;
}
l->l_kpriority = true;
sq = sleeptab_lookup(&sleeptab, ident);
sleepq_enter(sq, l);
sleepq_enqueue(sq, ident, wmesg, &sleep_syncobj);
if (interlock != NULL) {
KASSERT(simple_lock_held(interlock));
simple_unlock(interlock);
}
error = sleepq_block(timo, priority & PCATCH);
if (interlock != NULL && (priority & PNORELOCK) == 0)
simple_lock(interlock);
return error;
}
which would seem to indicate that struct curlwp has a problem with
member l_pflag. Beyond that, I know not.
Anybody have a clue?
Thanks, Don
Home |
Main Index |
Thread Index |
Old Index