Vivek Goyal wrote:
Hi Dave,

I can't open vmcore for 2.6.20-rc2 vanilla kernel with crash. I am using
latest crash version 4.0-3.16.

******************************************************************************
crash 4.0-3.16
Copyright (C) 2002, 2003, 2004, 2005, 2006  Red Hat, Inc.
Copyright (C) 2004, 2005, 2006  IBM Corporation
Copyright (C) 1999-2006  Hewlett-Packard Co
Copyright (C) 2005, 2006  Fujitsu Limited
Copyright (C) 2006  VA Linux Systems Japan K.K.
Copyright (C) 2005  NEC Corporation
Copyright (C) 1999, 2002  Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions.  Enter "help copying" to see the conditions.
This program has absolutely no warranty.  Enter "help warranty" for details.

GNU gdb 6.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...

WARNING: invalid linux_banner pointer: 756e694c
crash: vmlinux and vmcore do not match!
 

Hi Vivek,

It has to do with how the linux_banner symbol is declared.  The crash code
in question does this:
 

        if (!(sp = symbol_search("linux_banner")))
                error(FATAL, "linux_banner symbol does not exist?\n");
        else if (sp->type == 'R')
                linux_banner = symbol_value("linux_banner");
        else
                get_symbol_data("linux_banner", sizeof(ulong), &linux_banner);

        if (!IS_KVADDR(linux_banner))
                error(WARNING, "invalid linux_banner pointer: %lx\n",
                        linux_banner);

Up until 2.6.20-rc2 (apparently), if the linux_banner symbol
was in the readonly section ('R'), the string data was located
at the address of the linux_banner symbol.  Otherwise, the
linux_banner symbol contained the address of the string data.

In your kernel, what does "nm -Bn vmlinux | grep linux_banner" show?
Maybe 'r' instead of 'R'?

In any case, it should be easy enough to deal with, because you
can see the string data is at the location of the linux_banner
symbol:

> WARNING: invalid linux_banner pointer: 756e694c

and that's the string data instead of a pointer to the string
data:

  crash> ascii 756e694c
  756e694c: Linu
  crash>

Dave