gnu/108229: Infinite loop with kgdb while debugging mis-match
kernel/core
Jessica Han
jessicah at juniper.net
Tue Jan 23 01:00:37 UTC 2007
>Number: 108229
>Category: gnu
>Synopsis: Infinite loop with kgdb while debugging mis-match kernel/core
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Jan 23 01:00:36 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Jessica Han
>Release: FreeBSD 6.1-RELEASE
>Organization:
Juniper Networks
>Environment:
i386
>Description:
I got an infinite loop while trying to debug a kernel core on FreeBSD 6.1, note that I happened to be debugging a wrong "kernel" binary for the core dump.
# uname -sr
FreeBSD 6.1-RELEASE
#kgdb kernel vmcore.0
kgdb: kvm_read: invalid address (0x50012)
kgdb: kvm_read: invalid address (0x7)
kgdb: kvm_read: invalid address (0xf5c)
kgdb: kvm_read: invalid address (0xf5c)
kgdb: kvm_read: invalid address (0xf5c)
I've got a patch to fix it, can somebody review and commit it if it is okay? Thanks,
Jessica
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
--- /6.1-vanila/src/gnu/usr.bin/gdb/kgdb/kthr.c Wed Sep 14 22:32:10 2005
+++ gnu/usr.bin/gdb/kgdb/kthr.c Thu Nov 16 12:37:41 2006
@@ -92,12 +92,16 @@
dumptid = -1;
while (paddr != 0) {
- if (kvm_read(kvm, paddr, &p, sizeof(p)) != sizeof(p))
+ if (kvm_read(kvm, paddr, &p, sizeof(p)) != sizeof(p)) {
warnx("kvm_read: %s", kvm_geterr(kvm));
+ break;
+ }
addr = (uintptr_t)TAILQ_FIRST(&p.p_threads);
while (addr != 0) {
- if (kvm_read(kvm, addr, &td, sizeof(td)) != sizeof(td))
+ if (kvm_read(kvm, addr, &td, sizeof(td)) != sizeof(td)) {
warnx("kvm_read: %s", kvm_geterr(kvm));
+ break;
+ }
kt = malloc(sizeof(*kt));
kt->next = first;
kt->kaddr = addr;
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list