----- "ADITYA KRISHNAN" <akrishn7(a)ncsu.edu> wrote:
Hi,
I am new to crash utility. I want to run crash ( crash 4.0-2.18.1) on
dual-core AMD Opteron (x86_64) cluster. The cluster nodes are running
xen 3.0 the proc/version gives the following output : 2.6.16.13-xen
i am running xen 3.0 which has been installed on fc5.
If the crash version 4.0-2.18.1 you are using is the Red Hat
version 4.0-2.18.1, then it is well over 2 years old. I don't
think that xen kernels were even supported back then?
(see
http://people.redhat.com/anderson/crash.changelog.html)
In any case, please try the latest version by downloading
crash-4.0-7.4.tar.gz from
http://people.redhat.com/anderson,
and build it like this:
# tar xvzmf crash-4.0-7.4.tar.gz
...
# cd crash-4.0-7.4
# make
...
#
If there is a bug here, then I need to know if it exists in
the latest version. I don't debug old versions.
I guess the kernel was not built with debugging info on
I don't think so. If that were true, it would have failed much
earlier with a message like:
vmlinux-syms-2.6.16.13-xen: no debugging data available
And given that the name of the file is "vmlinux-syms-2.6.16.13-xen"
the "syms" presumably implies it's got debugging data in it.
But I don't know how it works on whatever distribution you're
running. It seems strange that a "vmlinux-syms-2.6.16.13-xen"
with full debuginfo data would be located in /boot?
Running crash gives the following output:
crash 4.0-2.18.1
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 Fujitsu Limited
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.
WARNING: cannot read linux_banner string
crash: /boot/vmlinux-syms-2.6.16.13-xen and /dev/mem do not match!
I read up on the previous threads that this is because /dev/mem
returns all zereos.
I think I need something like a patch for installing the /dev/crash
module. I am new to this so can anyone help me out with a detailed
procedure of what needs to be done.
I wouldn't think the /dev/crash driver is necessary on a kernel of
that vintage. Only Red Hat kernels from RHEL4 onward and upstream
kernels with the CONFIG_STRICT_DEVMEM configuration turned on would
require an alternative like the Red Hat /dev/crash driver.
But that being said, the "cannot read linux_banner string" means
that either one of these two things happened:
1. the read() from /dev/mem failed, or
2. the read() from /dev/mem worked, but returned zeroes.
I can't tell which happened, but I'm guessing the latter, because
there are a handful of other read()'s done from /dev/mem before that
particular one is done, which is trying to access the linux_banner string.
It may be due to an incorrect access to the linux_banner string, which has
changed over the years. In some kernels, the "linux_banner" symbol
is the address of the actual string, whereas on others it contains
a pointer to the actual string. The crash utility (*now*) has
this code segment in its verify_version() function:
if (!(sp = symbol_search("linux_banner")))
error(FATAL, "linux_banner symbol does not exist?\n");
else if ((sp->type == 'R') || (sp->type == 'r'))
linux_banner = symbol_value("linux_banner");
else
get_symbol_data("linux_banner", sizeof(ulong),
&linux_banner);
If you do an "nm -Bn vmlinux-syms-2.6.16.13-xen | grep linux_banner",
what do you see? If it's type R or r, then crash reads directly from
that symbol value address. Otherwise it reads the contents of the
that symbol value address, and reads the string from there.
You can also try "gdb vmlinux-syms-2.6.16.13-xen", from which
you can determine whether there's a level of indirection there.
But I'm blanking out w/respect to your "previous threads that this is
because /dev/mem returns all zeroes" statement. I'm not aware (at
least any more) of any case where /dev/mem would return zeroes instead
of failing the read() call itself? Can you point me to those
threads?
But again -- I'm not interested in issues with older versions
of crash. Please upgrade to the latest version, and if that
doesn't work, run it as "crash -d3 /boot/vmlinux-syms-2.6.16.13-xen",
and there will be a bunch of debug output displayed that may help nail
it down.
Dave