----- Original Message ----- > Hi Dave, thanks for your answer. > The basic procedure forgotten, I assumed -g would be included. > Never mind, I compile the kernel with -g. > However, crash still doesn't like it: It seems to be having a problem reading /dev/mem. I don't know if 2.4.37.9 allows the restriction of /dev/mem to the first 256 pages of memory when the kernel is configured with CONFIG_STRICT_DEVMEM. What is the output of: $ sudo crash -d8 vmlinux System.map Dave > > einoud@superchi:~/Pretoria/pretoria/kernel2.4/build/emPC/GREYHOUND/linux-2.4.37.9$ > > > crash 5.1.8 > Copyright (C) 2002-2011 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, 2007 VA Linux Systems Japan K.K. > Copyright (C) 2005 NEC Corporation > Copyright (C) 1999, 2002, 2007 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 (GDB) 7.0 > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show > copying" > and "show warranty" for details. > This GDB was configured as "i686-pc-linux-gnu"... > > crash: read error: kernel virtual address: c032e840 type: "xtime" > > I did some stepping through crash, maybe that'll be helpful as to see > what happened? > > crash 5.1.8 > Copyright (C) 2002-2011 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, 2007 VA Linux Systems Japan K.K. > Copyright (C) 2005 NEC Corporation > Copyright (C) 1999, 2002, 2007 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 (GDB) 7.0 > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show > copying" > and "show warranty" for details. > This GDB was configured as "i686-pc-linux-gnu"... > > please wait... (patching 13083 gdb minimal_symbol values) > Breakpoint 1, readmem (addr=3224561728, memtype=1, buffer=0x851c5d8, > size=8, type=0x840c9c6 "xtime", error_handle=1) > at memory.c:1849 > 1849 { > (gdb) step > 1856 if (CRASHDEBUG(4)) > (gdb) step > 1849 { > (gdb) step > 1856 if (CRASHDEBUG(4)) > (gdb) step > 1863 if (size <= 0) { > (gdb) step > 1861 bufptr = (char *)buffer; > (gdb) step > 1863 if (size <= 0) { > (gdb) step > 1870 fd = REMOTE_MEMSRC() ? pc->sockfd : (ACTIVE() ? > pc->mfd : pc->dfd); > (gdb) step > 1875 switch (memtype) > (gdb) p fd > $1 = 6 > (gdb) step > 1891 if (LKCD_DUMPFILE()) > (gdb) step > 1894 if (!IS_KVADDR(addr)) { > (gdb) step > generic_is_kvaddr (addr=3224561728) at memory.c:1739 > 1739 { > (gdb) step > 1741 } > (gdb) step > generic_is_kvaddr (addr=3224561728) at memory.c:1739 > 1739 { > (gdb) step > generic_is_kvaddr (addr=3224561728) at memory.c:1741 > 1741 } > (gdb) step > readmem (addr=3224561728, memtype=1, buffer=0x851c5d8, size=8, > type=0x840c9c6 "xtime", error_handle=1) > at memory.c:1921 > 1921 if (!kvtop(CURRENT_CONTEXT(), addr, > &paddr, 0)) { > (gdb) step > 1910 switch (memtype) > (gdb) step > 1921 if (!kvtop(CURRENT_CONTEXT(), addr, > &paddr, 0)) { > (gdb) step > kvtop (tc=0x0, kvaddr=3224561728, paddr=0xbfffdc20, verbose=0) at > memory.c:2615 > 2615 { > (gdb) step > 2618 return (machdep->kvtop(tc ? tc : CURRENT_CONTEXT(), > kvaddr, > (gdb) step > 2615 { > (gdb) step > 2618 return (machdep->kvtop(tc ? tc : CURRENT_CONTEXT(), > kvaddr, > (gdb) step > x86_kvtop (tc=0x0, kvaddr=3224561728, paddr=0xbfffdc20, verbose=0) at > x86.c:2753 > 2753 if (!IS_KVADDR(kvaddr)) > (gdb) step > 2743 { > (gdb) step > 2753 if (!IS_KVADDR(kvaddr)) > (gdb) step > generic_is_kvaddr (addr=3224561728) at memory.c:1739 > 1739 { > (gdb) step > 1741 } > (gdb) step > generic_is_kvaddr (addr=0) at memory.c:1739 > 1739 { > (gdb) step > generic_is_kvaddr (addr=0) at memory.c:1741 > 1741 } > (gdb) step > x86_kvtop (tc=0x0, kvaddr=3224561728, paddr=0xbfffdc20, verbose=0) at > x86.c:2756 > 2756 if (XEN_HYPER_MODE()) { > (gdb) step > 2763 if (!vt->vmalloc_start) { > (gdb) step > 2764 *paddr = VTOP(kvaddr); > (gdb) step > 2765 return TRUE; > (gdb) step > 2862 } > (gdb) step > kvtop (tc=0x0, kvaddr=3224561728, paddr=0xbfffdc20, verbose=0) at > memory.c:2620 > 2620 } > (gdb) step > readmem (addr=3336256, memtype=1, buffer=0x851c5d8, size=8, > type=0x840c9c6 "xtime", error_handle=1) at memory.c:1947 > 1947 cnt = PAGESIZE() - PAGEOFFSET(paddr); > (gdb) step > 1952 if (CRASHDEBUG(8)) > (gdb) step > 1956 if (memtype == KVADDR) > (gdb) step > 1957 pc->curcmd_flags |= MEMTYPE_KVADDR; > (gdb) step > 1961 switch (READMEM(fd, bufptr, cnt, > (gdb) step > read_dev_mem (fd=6, bufptr=0x851c5d8, cnt=8, addr=3224561728, > paddr=3336256) at memory.c:2027 > 2027 { > (gdb) step > 2030 if (!machdep->verify_paddr(paddr)) { > (gdb) step > generic_verify_paddr (paddr=3336256) at memory.c:2020 > 2020 } > (gdb) step > read_dev_mem (fd=6, bufptr=0x851c5d8, cnt=8, addr=3224561728, > paddr=3336256) at memory.c:2043 > 2043 if (vt->high_memory && (paddr >= > (physaddr_t)(VTOP(vt->high_memory)))) { > (gdb) step > 2049 if (lseek(fd, (off_t)paddr, SEEK_SET) == -1) > (gdb) step > 2026 read_dev_mem(int fd, void *bufptr, int cnt, ulong addr, > physaddr_t paddr) > (gdb) step > 2053 errno = 0; > (gdb) step > 2054 readcnt = read(fd, bufptr, cnt); > (gdb) step > read (fd=6, bufptr=0x851c5d8, cnt=8, addr=3224561728, paddr=3336256) > at /usr/include/bits/unistd.h:45 > 45 return __read_alias (__fd, __buf, __nbytes); > (gdb) step > read_dev_mem (fd=6, bufptr=0x851c5d8, cnt=8, addr=3224561728, > paddr=3336256) at memory.c:2056 > 2056 if ((readcnt != cnt) && CRASHDEBUG(4)) { > (gdb) step > 2054 readcnt = read(fd, bufptr, cnt); > (gdb) step > read (fd=6, bufptr=0x851c5d8, cnt=8, addr=3224561728, paddr=3336256) > at /usr/include/bits/unistd.h:45 > 45 return __read_alias (__fd, __buf, __nbytes); > (gdb) step > read_dev_mem (fd=6, bufptr=0x851c5d8, cnt=8, addr=3224561728, > paddr=3336256) at memory.c:2056 > 2056 if ((readcnt != cnt) && CRASHDEBUG(4)) { > (gdb) step > 2089 if (readcnt != cnt) > (gdb) step > 2079 if ((readcnt != cnt) && readcnt && (machdep->flags & > DEVMEMRD) && > (gdb) step > 2093 } > (gdb) step > readmem (addr=<value optimized out>, memtype=1, buffer=0x851c5d8, > size=8, type=0x840c9c6 "xtime", error_handle=1) > at memory.c:1962 > 1962 (memtype == PHYSADDR) || (memtype == > XENMACHADDR) ? 0 : addr, paddr)) > (gdb) step > 1970 if (PRINT_ERROR_MESSAGE) > (gdb) step > 1971 error(INFO, READ_ERRMSG, > memtype_string(memtype, 0), addr, type); > (gdb) step > memtype_string (memtype=1, debug=0) at memory.c:2325 > 2325 switch (memtype) > (gdb) step > 2331 sprintf(membuf, debug ? "KVADDR" : "kernel > virtual"); > (gdb) step > 2340 sprintf(membuf, debug ? "FILEADDR" : > "dumpfile"); > (gdb) step > sprintf (memtype=<value optimized out>, debug=0) at > /usr/include/bits/stdio2.h:34 > 34 return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - > 1, > (gdb) step > memtype_string (memtype=<value optimized out>, debug=<value optimized > out>) at memory.c:2351 > 2351 } > (gdb) step > __error (type=1, fmt=0x83c90d8 "read error: %s address: %llx type: > \"%s\"\n") at tools.c:41 > 41 { > (gdb) step > 48 if (CRASHDEBUG(1) || (pc->flags & DROP_CORE)) { > (gdb) step > 41 { > (gdb) step > 45 void *retaddr[NUMBER_STACKFRAMES] = { 0 }; > (gdb) step > 48 if (CRASHDEBUG(1) || (pc->flags & DROP_CORE)) { > (gdb) step > 45 void *retaddr[NUMBER_STACKFRAMES] = { 0 }; > (gdb) step > 48 if (CRASHDEBUG(1) || (pc->flags & DROP_CORE)) { > (gdb) step > 40 __error(int type, char *fmt, ...) > (gdb) step > 55 (void)vsnprintf(buf, BUFSIZE, fmt, ap); > (gdb) step > vsnprintf (type=1, fmt=0x83c90d8 "read error: %s address: %llx type: > \"%s\"\n") at /usr/include/bits/stdio2.h:78 > 78 return __builtin___vsnprintf_chk (__s, __n, > __USE_FORTIFY_LEVEL - 1, > (gdb) step > __error (type=1, fmt=0x83c90d8 "read error: %s address: %llx type: > \"%s\"\n") at tools.c:58 > 58 if (!fmt && FATAL_ERROR(type)) { > (gdb) step > 63 end_of_line = FATAL_ERROR(type) && !(pc->flags & > RUNTIME); > (gdb) step > 65 if ((new_line = (buf[0] == '\n'))) > (gdb) step > 67 else if (pc->flags & PLEASE_WAIT) > (gdb) step > 70 if (type == CONT) > (gdb) step > 67 else if (pc->flags & PLEASE_WAIT) > (gdb) step > 70 if (type == CONT) > (gdb) step > 75 if (pc->stdpipe) { > (gdb) step > 85 fprintf(stdout, "%s%s%s %s%s", > (gdb) step > fprintf (type=1, fmt=0x83c90d8 "read error: %s address: %llx type: > \"%s\"\n") at /usr/include/bits/stdio2.h:98 > 98 return __fprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, > __fmt, > (gdb) step > crash: read error: kernel virtual address: c032e840 type: "xtime" > __error (type=1, fmt=0x83c90d8 "read error: %s address: %llx type: > \"%s\"\n") at tools.c:92 > 92 fflush(stdout); > (gdb) step > 95 if ((fp != stdout) && (fp != pc->stdpipe)) { > (gdb) step > 105 if ((pc->flags & DROP_CORE) && (type != NOTE)) { > (gdb) step > 111 switch (type) > (gdb) step > 133 } > (gdb) step > readmem (addr=3224561728, memtype=1, buffer=0x851c5d8, size=8, > type=0x840c9c6 "xtime", > error_handle=<value optimized out>) at memory.c:1992 > 1992 switch (error_handle) > (gdb) step > 1995 if ((pc->flags & DEVMEM) && (kt->flags & > PRE_KERNEL_INIT) && > (gdb) step > 1996 devmem_is_restricted() && > switch_to_proc_kcore()) > (gdb) step > devmem_is_restricted (addr=3224561728, memtype=1, buffer=0x851c5d8, > size=8, type=0x840c9c6 "xtime", error_handle=1) > at memory.c:2137 > 2137 if (STREQ(pc->live_memsrc, "/dev/mem") && > (gdb) step > readmem (addr=3224561728, memtype=1, buffer=0x851c5d8, size=8, > type=0x840c9c6 "xtime", error_handle=1) > at memory.c:1996 > 1996 devmem_is_restricted() && > switch_to_proc_kcore()) > (gdb) step > devmem_is_restricted (addr=3224561728, memtype=1, buffer=0x851c5d8, > size=8, type=0x840c9c6 "xtime", error_handle=1) > at memory.c:2138 > 2138 kernel_symbol_exists("devmem_is_allowed") && > (gdb) step > kernel_symbol_exists (symbol=0x83c63dc "devmem_is_allowed") at > symbols.c:4722 > 4722 if ((sp = symname_hash_search(symbol))) > (gdb) step > symname_hash_search (name=0x83c63dc "devmem_is_allowed") at > symbols.c:889 > 889 sp = st->symname_hash[SYMNAME_HASH_INDEX(name)]; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step > 892 if (STREQ(sp->name, name)) > (gdb) step > 894 sp = sp->name_hash_next; > (gdb) step 10 > 891 while (sp) { > (gdb) step 20 > 894 sp = sp->name_hash_next; > (gdb) step > 891 while (sp) { > (gdb) step 100 > > Program exited with code 01. > Thanks, > > Reinoud. > > -----Original Message----- > From: crash-utility-bounces@xxxxxxxxxx > [mailto:crash-utility-bounces@xxxxxxxxxx] On Behalf Of Dave Anderson > Sent: Thursday, September 15, 2011 6:07 AM > To: Discussion list for crash utility usage, maintenance and > development > Subject: Re: crash cannot read the symbols > > > > ----- Original Message ----- > > Hi Everyone, > > > > I am just trying load a kernel and System.map file into crash. > > > > crash vmlinux System.map > > > > I get: > > > > crash 5.1.7 > > Copyright (C) 2002-2011 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, 2007 VA Linux Systems Japan K.K. > > Copyright (C) 2005 NEC Corporation > > Copyright (C) 1999, 2002, 2007 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 (GDB) 7.0 > > Copyright (C) 2009 Free Software Foundation, Inc. > > License GPLv3+: GNU GPL version 3 or later > > <http://gnu.org/licenses/gpl.html> > > This is free software: you are free to change and redistribute it. > > There is NO WARRANTY, to the extent permitted by law. Type "show > > copying" > > and "show warranty" for details. > > This GDB was configured as "i686-pc-linux-gnu"... > > > > crash: vmlinux: no debugging data available > > > > However, the System.map file reads fine and “nm vmlinux” shows the > > symbols as well. > > > > A side note that this is a linux 2.4 kernel. > > Is linux 2.4 not supported or what am I doing wrong? > > Linux 2.4 is supported, but either the vmlinux file was not > originally built with the -g CFLAG, or it had the debuginfo data > stripped. > Without the debuginfo data, the vmlinux is useless. > > If by chance it is a RHEL3 2-4-based kernel, there is an associated > vmlinux.debug file that comes with the separate kernel-debuginfo rpm > package, so for example, you'd end up with two files: > > vmlinux-2.4.21-47.EL and vmlinux-2.4.21-47.EL.debug > > that would be installed here: > > /boot/vmlinux-2.4.21-47.EL > /usr/lib/debug/boot/vmlinux-2.4.21-47.EL.debug > > If the files are found in locations above, running on a live system > they would be found automatically when you enter: > > $ crash > > Alternatively you could just throw both files on the command line: > > $ crash <path-to>/vmlinux-2.4.21-47.EL > <path-to>/vmlinux-2.4.21-47.EL.debug > > That all being said, since you are trying "crash vmlinux" I'm > guessing that you are using a vmlinux file from another distro, or > perhaps building your own kernel. > > If building your own kernel, the CFLAGS in the top-level Makefile > needs to contain -g. In linux 2.4, I don't believe that there was a > CONFIG_DEBUG_INFO option that could be configured to do it > automatically, so you may have to change it manually, and then > rebuild the kernel. Presuming that the original kernel that you're > trying to analyze was booted from the same kernel version but was > not built with -g, then you would also have to put the System.map > file from the original kernel on the command line as you have done. > > If the vmlinux file is from another distro, mention that, and perhaps > someone from the list can help. > > Dave > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility