Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Nov 2006 16:47:06 -0800
From:      Jessica Han <jessicah@juniper.net>
To:        freebsd-arch@freebsd.org, marcel@xcllnt.net
Subject:   A Patch for kgdb 
Message-ID:  <455D068A.2090503@juniper.net>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------010609060404070502070607
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I got an infinite loop while trying to debug a kernel core on FreeBSD 6.1.
# 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)

The attached patch fixed it, can somebody review it for me and commit it 
if it is okay? Thanks,

Jessica
jessicah@juniper.net


--------------010609060404070502070607
Content-Type: text/x-patch;
 name="kthr.c.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="kthr.c.patch"

--- /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;

--------------010609060404070502070607--



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