diff -Naur -x .svn -x '*.gz' -Naur LKCD2/lkcd/trunk/lkcdutils/lcrash/unwind.c LKCD/lkcd/trunk/lkcdutils/lcrash/unwind.c
--- LKCD2/lkcd/trunk/lkcdutils/lcrash/unwind.c	2006-05-25 12:19:44.415881135 -0700
+++ LKCD/lkcd/trunk/lkcdutils/lcrash/unwind.c	2006-05-24 11:22:57.268583651 -0700
@@ -2290,6 +2290,7 @@
 }
 
 extern kaddr_t KERN_START, KERN_END;
+extern kaddr_t VMALLOC_START, VMALLOC_END;
 
 /*
  * ia64_unwind()
@@ -2297,9 +2298,25 @@
 int
 ia64_unwind(struct unw_frame_info *info)
 {
-	int ret;
+	int good = 0, ret;
 
-	if ((info->ip < KERN_START) || (info->ip > KERN_END)) {
+	/* Make sure we have an IP address
+	 */
+	if (!info->ip) {
+		return(1);
+	}
+
+	/* Make sure our IP address is a valid kernel address
+	 */
+	if ((info->ip >= KERN_START) && (info->ip <= KERN_END)) {
+		good = 1;
+	}
+	if (!good) {
+		if ((info->ip >= VMALLOC_START) && (info->ip <= VMALLOC_END)) {
+		    good = 1;
+		}
+	}
+	if (!good) {
 		return(1);
 	}
 	ret = unwind(info);
