bug-hurd
[Top][All Lists]
Advanced

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

Re: weirdo panic


From: Thomas Schwinge
Subject: Re: weirdo panic
Date: Thu, 24 Feb 2005 18:01:54 +0100
User-agent: Mutt/1.4.2.1i

Hello again!

Another kernel crash.  The console was running at that time, so perhaps
I missed some messages.
The kernel debugger (Ctrl-Alt-d), however, offered the following to me:
#v+
Stopped at 0x17673a: ret
db> trace
0x17673a(0)
Kernel page fault at address 0x30, eip = 0x16ef1c
Kernel page fault trap, eip 0x16ef1c
Caught Page fault (14), code = 0, pc = 16ef1c
#v-

#v+
$ addr2line -fe gnumach 0x17673a 0x16ef1c
spl0
i386/i386/spl.S:92
db_nextframe
i386/i386/db_trace.c:273
#v-

#v+
$ cat -n i386/i386/spl.S | grep -C 10 ^\ \ \ \ 92
    82  1:
    83          cmpl    $(SPL0),EXT(curr_ipl)   /* are we at spl0? */
    84          je      1f                      /* yes, all done */
    85          movl    $(SPL0),EXT(curr_ipl)   /* set ipl */
    86          movl    EXT(pic_mask)+SPL0*4,%eax
    87                                          /* get PIC mask */
    88          SETMASK()                       /* program PICs with new mask */
    89  1:
    90          sti                             /* enable interrupts */
    91          popl    %eax                    /* return previous mask */
    92          ret
    93  
    94  Entry(splsoftclock)
    95  ENTRY(spl1)
    96          SETIPL(SPL1)
    97  
    98  ENTRY(spl2)
    99          SETIPL(SPL2)
   100  
   101  ENTRY(spl3)
   102          SETIPL(SPL3)
#v-

#v+
$ cat -n i386/i386/db_trace.c | grep -C 10 ^\ \ \ 273
   263          task_t task = (thread != THREAD_NULL)? thread->task: TASK_NULL;
   264  
   265          switch(frame_type) {
   266          case TRAP:
   267              /*
   268               * We know that trap() has 1 argument and we know that
   269               * it is an (struct i386_saved_state *).
   270               */
   271              saved_regs = (struct i386_saved_state *)
   272                          
db_get_task_value((int)&((*fp)->f_arg0),4,FALSE,task);
   273              db_printf(">>>>> %s (%d) at ",
   274                          trap_name(saved_regs->trapno), 
saved_regs->trapno);
   275              db_task_printsym(saved_regs->eip, DB_STGY_PROC, task);
   276              db_printf(" <<<<<\n");
   277              *fp = (struct i386_frame *)saved_regs->ebp;
   278              *ip = (db_addr_t)saved_regs->eip;
   279              break;
   280          case INTERRUPT:
   281              if (*lfp == 0) {
   282                  db_printf(">>>>> interrupt <<<<<\n");
   283                  goto miss_frame;
#v-


Regards,
 Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]