<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Vivek Goyal wrote:
<blockquote TYPE=CITE>Hi Dave,
<p>I can't open vmcore for 2.6.20-rc2 vanilla kernel with crash. I am using
<br>latest crash version 4.0-3.16.
<p>******************************************************************************
<br>crash 4.0-3.16
<br>Copyright (C) 2002, 2003, 2004, 2005, 2006  Red Hat, Inc.
<br>Copyright (C) 2004, 2005, 2006  IBM Corporation
<br>Copyright (C) 1999-2006  Hewlett-Packard Co
<br>Copyright (C) 2005, 2006  Fujitsu Limited
<br>Copyright (C) 2006  VA Linux Systems Japan K.K.
<br>Copyright (C) 2005  NEC Corporation
<br>Copyright (C) 1999, 2002  Silicon Graphics, Inc.
<br>Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux,
Inc.
<br>This program is free software, covered by the GNU General Public License,
<br>and you are welcome to change it and/or distribute copies of it under
<br>certain conditions.  Enter "help copying" to see the conditions.
<br>This program has absolutely no warranty.  Enter "help warranty"
for details.
<p>GNU gdb 6.1
<br>Copyright 2004 Free Software Foundation, Inc.
<br>GDB is free software, covered by the GNU General Public License, and
you are
<br>welcome to change it and/or distribute copies of it under certain conditions.
<br>Type "show copying" to see the conditions.
<br>There is absolutely no warranty for GDB.  Type "show warranty"
for details.
<br>This GDB was configured as "i686-pc-linux-gnu"...
<p>WARNING: invalid linux_banner pointer: 756e694c
<br>crash: vmlinux and vmcore do not match!
<br> </blockquote>
<tt>Hi Vivek,</tt><tt></tt>
<p><tt>It has to do with how the linux_banner symbol is declared. 
The crash code</tt>
<br><tt>in question does this:</tt>
<br><tt></tt> <tt></tt>
<p><tt>        if (!(sp = symbol_search("linux_banner")))</tt>
<br><tt>               
error(FATAL, "linux_banner symbol does not exist?\n");</tt>
<br><tt>        else if (sp->type ==
'R')</tt>
<br><tt>               
linux_banner = symbol_value("linux_banner");</tt>
<br><tt>        else</tt>
<br><tt>               
get_symbol_data("linux_banner", sizeof(ulong), &linux_banner);</tt><tt></tt>
<p><tt>        if (!IS_KVADDR(linux_banner))</tt>
<br><tt>               
error(WARNING, "invalid linux_banner pointer: %lx\n",</tt>
<br><tt>                       
linux_banner);</tt><tt></tt>
<p><tt>Up until 2.6.20-rc2 (apparently), if the linux_banner symbol</tt>
<br><tt>was in the readonly section ('R'), the string data was located</tt>
<br><tt>at the address of the linux_banner symbol.  Otherwise, the</tt>
<br><tt>linux_banner symbol contained the address of the string data.</tt><tt></tt>
<p><tt>In your kernel, what does "nm -Bn vmlinux | grep linux_banner" show?</tt>
<br><tt>Maybe 'r' instead of 'R'?</tt><tt></tt>
<p><tt>In any case, it should be easy enough to deal with, because you</tt>
<br><tt>can see the string data is at the location of the linux_banner</tt>
<br><tt>symbol:</tt><tt></tt>
<p><tt>> WARNING: invalid linux_banner pointer: 756e694c</tt><tt></tt>
<p><tt>and that's the string data instead of a pointer to the string</tt>
<br><tt>data:</tt><tt></tt>
<p><tt>  crash> ascii 756e694c</tt>
<br><tt>  756e694c: Linu</tt>
<br><tt>  crash></tt><tt></tt>
<p><tt>Dave</tt>
<br><tt></tt> 
<br><tt></tt> 
<br><tt></tt> 
<br><tt></tt> 
<br><tt></tt> 
<br><tt></tt> </html>