[Crash-utility] problem with crash on upstream kernel cores

Dave Anderson anderson at redhat.com
Mon Feb 26 21:07:20 UTC 2007


The 2.6.21-rc1 kernel has removed the zone->free_pages member, and
replaced it by using the zone->vm_stat[NR_FREE_PAGES] counter.

Without this patch, crash will die during initialization with:

crash: invalid (optional) structure member offsets: zone_struct_free_pages or zone_free_pages

The attached patch to the 4.0-3.20 tree is queued for the next release.

Thanks for the report,
  Dave


-------------- next part --------------
memory.c symbols.c defs.h
--- crash-4.0-3.20/memory.c	2007-02-26 15:34:57.000000000 -0500
+++ crash-next/memory.c	2007-02-26 15:38:51.000000000 -0500
@@ -659,8 +659,17 @@
                 	vt->dump_free_pages = dump_free_pages_zones_v1;
 
 		} else if (VALID_STRUCT(zone)) {
-                        MEMBER_OFFSET_INIT(zone_free_pages, 
-				"zone", "free_pages");
+			MEMBER_OFFSET_INIT(zone_vm_stat, "zone", "vm_stat");
+			MEMBER_OFFSET_INIT(zone_free_pages, "zone", "free_pages");
+			if (INVALID_MEMBER(zone_free_pages) && 
+			    VALID_MEMBER(zone_vm_stat)) {
+				long nr_free_pages = 0;
+				if (!enumerator_value("NR_FREE_PAGES", &nr_free_pages))
+					error(WARNING, 
+					    "cannot determine NR_FREE_PAGES enumerator\n");
+				ASSIGN_OFFSET(zone_free_pages) = OFFSET(zone_vm_stat) + 
+					(nr_free_pages * sizeof(long));
+			}
                         MEMBER_OFFSET_INIT(zone_free_area,
                                 "zone", "free_area");
                         MEMBER_OFFSET_INIT(zone_zone_pgdat,
--- crash-4.0-3.20/symbols.c	2007-02-26 15:34:57.000000000 -0500
+++ crash-next/symbols.c	2007-02-26 14:33:41.000000000 -0500
@@ -6414,6 +6414,8 @@
                 OFFSET(zone_pages_low));
 	fprintf(fp, "               zone_pages_high: %ld\n",
                 OFFSET(zone_pages_high));
+	fprintf(fp, "                  zone_vm_stat: %ld\n",
+                OFFSET(zone_vm_stat));
 
         fprintf(fp, "                neighbour_next: %ld\n", 
 		OFFSET(neighbour_next));
--- crash-4.0-3.20/defs.h	2007-02-26 15:34:57.000000000 -0500
+++ crash-next/defs.h	2007-02-26 14:52:33.000000000 -0500
@@ -1282,6 +1282,7 @@
 	long zone_pages_min;
 	long zone_pages_low;
 	long zone_pages_high;
+	long zone_vm_stat;
         long neighbour_next;
         long neighbour_primary_key;
         long neighbour_ha;


More information about the Crash-utility mailing list