Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Apr 2001 20:16:38 +0200
From:      Jesper Skriver <jesper@skriver.dk>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        current@FreeBSD.org
Subject:   Re: kernel panic in -current, ithread or newcard related ?
Message-ID:  <20010417201638.A23027@skriver.dk>
In-Reply-To: <XFMail.010416201037.jhb@FreeBSD.org>; from jhb@FreeBSD.org on Mon, Apr 16, 2001 at 08:10:37PM -0700
References:  <20010415172142.A27168@skriver.dk> <XFMail.010416201037.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Apr 16, 2001 at 08:10:37PM -0700, John Baldwin wrote:
> 
> On 15-Apr-01 Jesper Skriver wrote:
> > About every other time I boot my IBM ThinkPad 600E I get this panic
> > (hand typed, as I don't have a second machine here to be able to use a
> > serial console).
> > 
> > Fatal trap 12: page fault while in kernel mode
> > Fault virtual address = 0x28
> 
> It's a null pointer dereference.  If you've compiled a debug kernel then do
> 'gdb -k /usr/obj/usr/src/sys/TAM2/kernel.debug' and then do
> 'l *csa_readio+0x17' to find the offending line.  It's usually pretty easy to
> figure out then.

I's not obvious to me, newbee in kernel debugging, how is the below
(from the trace) related ?

/Jesper

(kgdb) l *csa_readio+0x17
0xc0159cd3 is in csa_readio (machine/bus_at386.h:205).
200     }
201
202     static __inline u_int32_t
203     bus_space_read_4(bus_space_tag_t tag, bus_space_handle_t handle,
204                      bus_size_t offset)
205     {
206     #if defined(_I386_BUS_PIO_H_)
207     #if defined(_I386_BUS_MEMIO_H_)
208             if (tag == I386_BUS_SPACE_IO)
209     #endif
(kgdb) l *csa_intr+0x14
0xc015a5ec is in csa_intr (/usr/src/sys/dev/sound/pci/csapcm.c:685).
680     csa_intr (void *p)
681     {
682             struct csa_info *csa = p;
683
684             if ((csa->binfo->hisr & HISR_VC0) != 0)
685                     chn_intr(csa->pch.channel);
686             if ((csa->binfo->hisr & HISR_VC1) != 0)
687                     chn_intr(csa->rch.channel);
688     }
689
(kgdb) l *ithread_loop+0x23f
0xc018e077 is in ithread_loop (/usr/src/sys/kern/kern_intr.c:518).
513                                             free(ih, M_ITHREAD);
514                                             mtx_unlock(&Giant);
515                                             goto restart;
516                                     }
517                                     ih->ih_handler(ih->ih_argument);
518                                     if ((ih->ih_flags & IH_MPSAFE) == 0)
519                                             mtx_unlock(&Giant);
520                             }
521                     }
522
(kgdb) l *fork_exit+0x59
0xc018d221 is in fork_exit (/usr/src/sys/kern/kern_fork.c:737).
732
733             /*
734              * Check if a kernel thread misbehaved and returned from its main
735              * function.
736              */
737             PROC_LOCK(p);
738             if (p->p_flag & P_KTHREAD) {
739                     PROC_UNLOCK(p);
740                     mtx_lock(&Giant);
741                     printf("Kernel thread \"%s\" (pid %d) exited prematurely.\n",
(kgdb) l *fork_trampoline+0x8
No source file for address 0xc0299f6c.


/Jesper

-- 
Jesper Skriver, jesper(at)skriver(dot)dk  -  CCIE #5456
Work:    Network manager   @ AS3292 (Tele Danmark DataNetworks)
Private: FreeBSD committer @ AS2109 (A much smaller network ;-)

One Unix to rule them all, One Resolver to find them,
One IP to bring them all and in the zone to bind them.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010417201638.A23027>