page fault panic tracked down (selwakeuppri())

Don Lewis truckman at FreeBSD.org
Tue Jan 6 15:15:29 PST 2004


On  6 Jan, Stefan Ehmann wrote:
> On Tue, 2004-01-06 at 21:01, Don Lewis wrote:
>> > #0  doadump () at /usr/src/sys/kern/kern_shutdown.c:240
>> > #1  0xc04e5178 in boot (howto=256) at
>> > /usr/src/sys/kern/kern_shutdown.c:372
>> > #2  0xc04e5507 in panic () at /usr/src/sys/kern/kern_shutdown.c:550
>> > #3  0xc07eb648 in feed_vchan_s16 (f=0xc3967c00, c=0x0, b=0xc37d0000 "", 
>> >     count=2048, source=0xc3741500) at
>> > /usr/src/sys/dev/sound/pcm/vchan.c:80
>> 
>> It is somewhat worrysome that c is 0x0 here, since it should be the same
>> as channel in frame #4.  Maybe a gdb oops?
>> 
>> Print *src in this frame, the KASSERT is apparently failing because the
>> bufsize member of this structure is not the same as the count parameter.
> (kgdb) print *src
> $2 = {dev = 0xc37a8580, buf = 0xc3880c00 "", 
>   tmpbuf = 0xc3882000
> "ÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­ÞÞÀ­Þ"..., 
>   bufsize = 688, maxsize = 688, dl = 0, rp = 0, rl = 0, hp = 0, total =
> 0, 
>   prev_total = 0, dmachan = 0, dir = 0, fmt = 268435472, spd = 44100,
> bps = 4, 
>   blksz = 344, blkcnt = 2, xrun = 0, flags = 0, dmamap = 0x0, dmatag =
> 0x0, 
>   buf_addr = 0, sel = {si_thrlist = {tqe_next = 0x0, tqe_prev = 0x0}, 
>     si_thread = 0x0, si_note = {slh_first = 0x0}, si_flags = 0}, 
>   name = "pcm0:play:0:secondary", '\0' <repeats 26 times>}

count=2048,
bufsize=688
maxsize=688
blksize=344

Certainly interesting.  I wonder which is right ...


>> > #4  0xc07e1c6d in sndbuf_feed (from=0xc3741500, to=0xc3741600, 
>> >     channel=0xc37a8880, feeder=0xc3967c00, count=3279164672) at
>> > feeder_if.h:60
>> 
>> Also, print *channel in this frame.  I'd like to see what flags are set.
> (kgdb) print *channel
> $3 = {methods = 0xc377ec20, num = 0, pid = -1, refcount = 0, 
>   feeder = 0xc3967c00, align = 4, volume = 25700, speed = 44100, 
>   format = 268435472, flags = 12320, feederflags = 0, blocks = 0, 
>   direction = 1, interrupts = 224003, xruns = 1, bufhard = 0xc3741600, 
>   bufsoft = 0xc3741500, parentsnddev = 0xc37c0200, parentchannel = 0x0, 
>   devinfo = 0xc37a8738, dev = 0xc37a8580, 
>   name = "pcm0:play:0", '\0' <repeats 20 times>, lock = 0xc37ba280, 
>   children = {slh_first = 0xc377ebf0}}

flags = 0x3020, which decodes to (CHN_F_HAS_SIZE | CHN_F_BUSY |
CHN_F_TRIGGERED), but not CHN_F_RUNNING.  Time to go study the code.

> gdb made problems again. When using add-symbol-file as described in the
> handbook backtrace was fine but couldn't debug anything (getting no
> stack). So I just copied the .ko.debug files to /boot/.ko - Hope this
> won't cause any problems.

That should be OK.



More information about the freebsd-current mailing list