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

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:

   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)
           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) {

       error = sleepq_block(timo, priority & PCATCH);

       if (interlock != NULL && (priority & PNORELOCK) == 0)
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