----- "Zhang Le" <r0bertz@xxxxxxxxxx> wrote: > I got this on 2.6.34-rc2-mm1: > > crash: invalid structure member offset: pglist_data_bdata > FILE: memory.c LINE: 12097 FUNCTION: dump_memory_nodes() > > [/usr/bin/crash] error trace: => 81356bc > > 81356bc: OFFSET_verify+140 > > any pointers on how to fix this? > > Zhang, Le Actually that particular issue was addressed in crash version 5.0.2 that was just released this week: - Fix for initialization-time failure on 2.6.34 and later kernels that were configured with CONFIG_NO_BOOTMEM. Without the patch, the crash session fails with the error message "crash: invalid structure member offset: pglist_data_bdata". (anderson@xxxxxxxxxx) However, if 2.6.34-rc2-mm1 has this patch (and I presume that is since it's in 2.6.34-rc3), then you're temporarily out of luck: --------------------------------------------------------------------------- commit dd17c8f72993f9461e9c19250e3f155d6d99df22 Author: Rusty Russell <rusty@xxxxxxxxxxxxxxx> Date: Thu Oct 29 22:34:15 2009 +0900 percpu: remove per_cpu__ prefix. Now that the return from alloc_percpu is compatible with the address of per-cpu vars, it makes sense to hand around the address of per-cpu variables. To make this sane, we remove the per_cpu__ prefix we used created to stop people accidentally using these vars directly. Now we have sparse, we can use that (next patch). tj: * Updated to convert stuff which were missed by or added after the original patch. * Kill per_cpu_var() macro. Signed-off-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx> Signed-off-by: Tejun Heo <tj@xxxxxxxxxx> Reviewed-by: Christoph Lameter <cl@xxxxxxxxxxxxxxxxxxxx> diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h index 5a5d6ce..ee99f6c 100644 --- a/include/linux/percpu-defs.h +++ b/include/linux/percpu-defs.h @@ -2,12 +2,6 @@ #define _LINUX_PERCPU_DEFS_H /* - * Determine the real variable name from the name visible in the - * kernel sources. - */ -#define per_cpu_var(var) per_cpu__##var - -/* * Base implementations of per-CPU variable declarations and definitions, where * the section in which the variable is to be placed is provided by the * 'sec' argument. This may be used to affect the parameters governing the @@ -56,24 +50,24 @@ */ #define DECLARE_PER_CPU_SECTION(type, name, sec) \ extern __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \ - extern __PCPU_ATTRS(sec) __typeof__(type) per_cpu__##name + extern __PCPU_ATTRS(sec) __typeof__(type) name #define DEFINE_PER_CPU_SECTION(type, name, sec) \ __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \ extern __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \ __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \ __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \ - __typeof__(type) per_cpu__##name + __typeof__(type) name #else /* * Normal declaration and definition macros. */ #define DECLARE_PER_CPU_SECTION(type, name, sec) \ - extern __PCPU_ATTRS(sec) __typeof__(type) per_cpu__##name + extern __PCPU_ATTRS(sec) __typeof__(type) name #define DEFINE_PER_CPU_SECTION(type, name, sec) \ __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES \ - __typeof__(type) per_cpu__##name + __typeof__(type) name #endif /* @@ -137,8 +131,8 @@ /* * Intermodule exports for per-CPU variables. */ -#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var) -#define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(per_cpu__##var) +#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(var) +#define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(var) #endif /* _LINUX_PERCPU_DEFS_H */ ---------------------------------------------------------------------- That patch changes all "per_cpu__xxx" symbols to no longer have the "per_cpu__" prefix -- which breaks quite a few things in the crash utility, and it will not initialize. I'm working on a fix for it, and will release a new version of crash, hopefully this coming week. Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility