Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Sep 2002 23:35:00 +0300
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        current@FreeBSD.org
Subject:   "Strange" crash dump data.
Message-ID:  <20020924203500.GA795@hades.hell.gr>

next in thread | raw e-mail | index | archive | help
I left my FreeBSD-current workstation at home running for a few hours,
and returned to find the configured "snake" saver running.  When I
pressed "Shift" to get the screen saver to stop, the console went
blank and stopped updating.  I broke into DDB and used "panic" to stop
everything (mostly a couple of compiles in /usr/ports running).  The
resulting crash dump seems strange though :-/

Looking at the code, I'd expect atkbd_isa_intr() to be called with a
non-NULL pointer as its only argument.  The debugger shows that this
isn't the case though.  Look for the lines that start with >>> for
comments that I've added to the script log.

%%%
Script started on Tue Sep 24 21:02:44 2002

root@hades[21:03]/var/crash# gdb -k /usr/obj/usr/src/sys/HADES5/kernel.debug vmcore.0
GNU gdb 5.2.0 (FreeBSD) 20020627
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-undermydesk-freebsd"...
panic: bwrite: buffer is not busy???
panic messages:
---
panic: from debugger

syncing disks... panic: bwrite: buffer is not busy???
Uptime: 33m43s
Dumping 64 MB
ata0: resetting devices ..
done
 16 32 48
---
#0  doadump () at /usr/src/sys/kern/kern_shutdown.c:223
223		dumping++;
(kgdb) bt
#0  doadump () at /usr/src/sys/kern/kern_shutdown.c:223
#1  0xc01d2b1c in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:355
#2  0xc01d2cf0 in poweroff_wait (junk=0xc033086b, howto=-1038164136) at /usr/src/sys/kern/kern_shutdown.c:508
#3  0xc020aedd in bwrite (bp=0x104) at /usr/src/sys/kern/vfs_bio.c:798
#4  0xc020c245 in vfs_bio_awrite (bp=0xc21edeb0) at /usr/src/sys/kern/vfs_bio.c:1639
#5  0xc01a89d8 in spec_fsync (ap=0xc5b1aa10) at /usr/src/sys/fs/specfs/spec_vnops.c:406
#6  0xc01a85b7 in spec_vnoperate (ap=0x0) at /usr/src/sys/fs/specfs/spec_vnops.c:124
#7  0xc02b38a8 in ffs_sync (mp=0xc0f32800, waitfor=2, cred=0xc06ade80, td=0xc037d580) at vnode_if.h:615
#8  0xc021b3f4 in sync (td=0xc037d580, uap=0x0) at /usr/src/sys/kern/vfs_syscalls.c:130
#9  0xc01d2759 in boot (howto=256) at /usr/src/sys/kern/kern_shutdown.c:264
#10 0xc01d2cf0 in poweroff_wait (junk=0xc031a5a8, howto=-978211964) at /usr/src/sys/kern/kern_shutdown.c:508
#11 0xc0140b61 in db_panic () at /usr/src/sys/ddb/db_command.c:449
#12 0xc0140b00 in db_command (last_cmdp=0xc035d760, cmd_table=0xc031a5a8, aux_cmd_tablep=0xc06bc180, aux_cmd_tablep_end=0x100)
    at /usr/src/sys/ddb/db_command.c:345
#13 0xc0140bcf in db_command_loop () at /usr/src/sys/ddb/db_command.c:471
#14 0xc01430be in db_trap (type=3, code=0) at /usr/src/sys/ddb/db_trap.c:72
#15 0xc02ecf92 in kdb_trap (type=3, code=0, regs=0xc5b1ac20) at /usr/src/sys/i386/i386/db_interface.c:166
#16 0xc02fbb88 in trap (frame=
      {tf_fs = -1069678568, tf_es = -978255856, tf_ds = 16, tf_edi = -1069627712, tf_esi = -1069708480,
       tf_ebp = -978211740, tf_isp = -978211764, tf_ebx = 0, tf_edx = 0, tf_ecx = -1069781504, tf_eax = 38,
       tf_trapno = 3, tf_err = 0, tf_eip = -1070673419, tf_cs = -1070333944, tf_eflags = 662,
       tf_esp = 0, tf_ss = -978211668}) at /usr/src/sys/i386/i386/trap.c:605
#17 0xc02ee3a8 in calltrap () at /var/tmp/ccn56iVL.s:98
#18 0xc02e9dac in scgetc (sc=0xc03ec6c0, flags=2) at /usr/src/sys/dev/syscons/syscons.c:3301
#19 0xc02e6148 in sckbdevent (thiskbd=0xc03c7180, event=0, arg=0xc03ec6c0) at /usr/src/sys/dev/syscons/syscons.c:622
#20 0xc02d9b14 in atkbd_intr (kbd=0xc03c7180, arg=0x0) at /usr/src/sys/dev/kbd/atkbd.c:458
#21 0xc03048aa in atkbd_isa_intr (arg=0x0) at /usr/src/sys/isa/atkbd_isa.c:175
#22 0xc01c2560 in ithread_loop (arg=0xc06b0900) at /usr/src/sys/kern/kern_intr.c:534
#23 0xc01c17a9 in fork_exit (callout=0xc01c23ec <ithread_loop>, arg=0xc06b0900, frame=0xc5b1ad48)
    at /usr/src/sys/kern/kern_fork.c:848
(kgdb) up 23
#23 0xc01c17a9 in fork_exit (callout=0xc01c23ec <ithread_loop>, arg=0xc06b0900, frame=0xc5b1ad48)
    at /usr/src/sys/kern/kern_fork.c:848
848		callout(arg, frame);
(kgdb) down 1
#22 0xc01c2560 in ithread_loop (arg=0xc06b0900) at /usr/src/sys/kern/kern_intr.c:534
534					ih->ih_handler(ih->ih_argument);
(kgdb) p *ih
$1 = {ih_handler = 0xc0304894 <atkbd_isa_intr>, ih_argument = 0xc03c7180, ih_flags = 0,
  ih_name = 0xc067d7f0 "atkbd0", ih_ithread = 0xc06b0900, ih_need = 0,
  ih_next = {tqe_next = 0x0, tqe_prev = 0xc06b0950}, ih_pri = 24 '\030'}
(kgdb) down 1
#21 0xc03048aa in atkbd_isa_intr (arg=0x0) at /usr/src/sys/isa/atkbd_isa.c:175
175		(*kbdsw[kbd->kb_index]->intr)(kbd, NULL);

>>> Shouldn't arg be equal to 0xc03c7180 here?
>>> I mean, the same as ih->ih_argument in the previous stack frame?

(kgdb) list
170	atkbd_isa_intr(void *arg)
171	{
172		keyboard_t *kbd;
173
174		kbd = (keyboard_t *)arg;
175		(*kbdsw[kbd->kb_index]->intr)(kbd, NULL);
176	}
177
178	DRIVER_MODULE(atkbd, atkbdc, atkbd_driver, atkbd_devclass, 0, 0);
(kgdb) quit
root@hades[21:04]/var/crash# exit

Script done on Tue Sep 24 21:04:53 2002
%%%

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?20020924203500.GA795>