<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<tt>"Jansen, Frank" wrote:</tt>
<blockquote TYPE=CITE><tt>> -----Original Message-----</tt>
<br><tt>> From: crash-utility-bounces@redhat.com</tt>
<br><tt>> [<a href="mailto:crash-utility-bounces@redhat.com">mailto:crash-utility-bounces@redhat.com</a>]
On Behalf Of Dave Anderson</tt>
<br><tt>> Sent: Monday, May 14, 2007 12:22 PM</tt>
<br><tt>> To: Discussion list for crash utility usage, maintenance and</tt>
<br><tt>> development</tt>
<br><tt>> Subject: Re: [Crash-utility] Seek error type: "tss_struct ist</tt>
<br><tt>> array" problem on8-CPU AMD system</tt>
<br><tt>></tt>
<br><tt>> "Jansen, Frank" wrote:</tt>
<br><tt>></tt>
<br><tt>> > Looking through the changelog, I saw that the 'tss_struct ist
array'</tt>
<br><tt>> > problem on 8-CPU systems had been addressed previously.</tt>
<br><tt>> However, I'm</tt>
<br><tt>> > running into this issue on an AMD server with crash 4.0-4.1</tt>
<br><tt>> and RHEL4</tt>
<br><tt>> > Update 5 (2.6.9-55.Elsmp).</tt>
<br><tt>> ></tt>
<br><tt>> > The output from the crash invocation is the following:</tt>
<br><tt>> > +++</tt>
<br><tt>> > [root@well-rhel4564-ps3 dump]# /fpj/crash System_map.2.6.9-55.ELsmp</tt>
<br><tt>> > vmlinux.debug.2.6.9-55.ELsmp ap3.1178895173.dmp</tt>
<br><tt>> ></tt>
<br><tt>> > crash 4.0-4.1</tt>
<br><tt>> > Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007  Red
Hat, Inc.</tt>
<br><tt>> > Copyright (C) 2004, 2005, 2006  IBM Corporation Copyright
(C)</tt>
<br><tt>> > 1999-2006  Hewlett-Packard Co Copyright (C) 2005, 2006 
Fujitsu</tt>
<br><tt>> > Limited Copyright (C) 2006, 2007  VA Linux Systems Japan
K.K.</tt>
<br><tt>> > Copyright (C) 2005  NEC Corporation</tt>
<br><tt>> > Copyright (C) 1999, 2002  Silicon Graphics, Inc.</tt>
<br><tt>> > Copyright (C) 1999, 2000, 2001, 2002  Mission Critical
Linux, Inc.</tt>
<br><tt>> > This program is free software, covered by the GNU General Public</tt>
<br><tt>> > License, and you are welcome to change it and/or distribute</tt>
<br><tt>> copies of</tt>
<br><tt>> > it under certain conditions.  Enter "help copying" to
see the</tt>
<br><tt>> > conditions.</tt>
<br><tt>> > This program has absolutely no warranty.  Enter "help
warranty" for</tt>
<br><tt>> > details.</tt>
<br><tt>> ></tt>
<br><tt>> > GNU gdb 6.1</tt>
<br><tt>> > Copyright 2004 Free Software Foundation, Inc.</tt>
<br><tt>> > GDB is free software, covered by the GNU General Public</tt>
<br><tt>> License, and</tt>
<br><tt>> > you are welcome to change it and/or distribute copies of it
under</tt>
<br><tt>> > certain conditions.</tt>
<br><tt>> > Type "show copying" to see the conditions.</tt>
<br><tt>> > There is absolutely no warranty for GDB.  Type "show warranty"
for</tt>
<br><tt>> > details.</tt>
<br><tt>> > This GDB was configured as "x86_64-unknown-linux-gnu"...</tt>
<br><tt>> ></tt>
<br><tt>> > crash: seek error: kernel virtual address: 10408119e84 
type:</tt>
<br><tt>> > "tss_struct ist array"</tt>
<br><tt>> > ---</tt>
<br><tt>> ></tt>
<br><tt>> > The server is a 4 dual-core AMD (2.8GHz) with 64GB.</tt>
<br><tt>> ></tt>
<br><tt>> > Any insights into how best to troubleshoot this are much</tt>
<br><tt>> appreciated.</tt>
<br><tt>> ></tt>
<br><tt>> > Thanks,</tt>
<br><tt>> ></tt>
<br><tt>> > Frank Jansen</tt>
<br><tt>></tt>
<br><tt>> I doubt this has anything to do with the 8-cpu issue.</tt>
<br><tt>></tt>
<br><tt>I think that you are right, as the crash -d7 seems to indicate
that the</tt>
<br><tt>dump may be incomplete(cf. attached crash -d7 output).</tt><tt></tt>
<p><tt>> A few questions:</tt>
<br><tt>></tt>
<br><tt>> Is this an RHEL4 derivative kernel of some kind?  I ask</tt>
<br><tt>> because you're using a system.map file as an argument.</tt>
<br><tt>></tt>
<br><tt>It's a standard kernel, to which we add a couple of our (Egenera)</tt>
<br><tt>drivers.  I can read the dump without the system map argument,
but was</tt>
<br><tt>just going off the data provided to me by the person that ran into
the</tt>
<br><tt>problem.</tt><tt></tt>
<p><tt>> Anyway, this dumpfile is Egenera's LKCD off-shoot, correct?</tt>
<br><tt>> Since you got an "lseek" error, the question is whether (1)</tt>
<br><tt>> the virtual address of 10408119e84 is legitimate, and (2)</tt>
<br><tt>> whether it is included in your dumpfile.</tt><tt></tt>
<p><tt>I think that the virtual address is legitimate, but that the dump
is</tt>
<br><tt>incomplete at this point.</tt><tt></tt>
<p><tt>></tt>
<br><tt>> What does "crash -d7 ..." show?</tt><tt></tt>
<p><tt>See attached output</tt><tt></tt>
<p><tt>></tt>
<br><tt>> Does crash work on the live system?</tt>
<br><tt>Yes, it works</tt></blockquote>
<tt>Right -- if it works on the live system, there's a good chance that</tt>
<br><tt>it's probably missing from the dumpfile.  The tss_struct for
each</tt>
<br><tt>cpu is located in each cpu's per-cpu data area.  I have seen
the</tt>
<br><tt>exact same problem with x86_64 netdump "vmcore-incomplete" dumpfiles,</tt>
<br><tt>where the per-cpu data areas, allocated with alloc_bootmem_node(),</tt>
<br><tt>would tend to be located in very high physical memory (beyond the</tt>
<br><tt>end of the vmcore-incomplete contents).</tt><tt></tt>
<p><tt>On a 64GB system,  the virtual address of 10408119e84 (~16GB
physical)</tt>
<br><tt>would certainly not be out of the question.  And if it can
be read</tt>
<br><tt>on the live machine (crash -d7 will show the same address access</tt>
<br><tt>sequence), then it's probably not included in the dumpfile for</tt>
<br><tt>whatever reason.</tt><tt></tt>
<p><tt>In fact, looking at the -d7 output, the level_pgt pagetable pointers</tt>
<br><tt>for each non-cpu0 cpu_pda get allocated with __get_free_pages()
-- and</tt>
<br><tt>there's a couple from the 10408xxxxxx virtual memory location:</tt><tt></tt>
<p><tt>...</tt>
<br><tt><readmem: ffffffff804ed700, KVADDR, "cpu_pda entry", 128, (FOE),
930580></tt>
<br><tt>CPU0: level4_pgt: ffffffff80101000 data_offset: 10087adef60</tt>
<br><tt><readmem: ffffffff804ed780, KVADDR, "cpu_pda entry", 128, (FOE),
930580></tt>
<br><tt>CPU1: level4_pgt: 1040802c000 data_offset: 10487bf8d60</tt>
<br><tt><readmem: ffffffff804ed800, KVADDR, "cpu_pda entry", 128, (FOE),
930580></tt>
<br><tt>CPU2: level4_pgt: 10408008000 data_offset: 10887bf8d60</tt>
<br><tt><readmem: ffffffff804ed880, KVADDR, "cpu_pda entry", 128, (FOE),
930580></tt>
<br><tt>CPU3: level4_pgt: 10bf9ff2000 data_offset: 10c87bfbf60</tt>
<br><tt><readmem: ffffffff804ed900, KVADDR, "cpu_pda entry", 128, (FOE),
930580></tt>
<br><tt>CPU4: level4_pgt: 10008028000 data_offset: 10087ae6f60</tt>
<br><tt><readmem: ffffffff804ed980, KVADDR, "cpu_pda entry", 128, (FOE),
930580></tt>
<br><tt>CPU5: level4_pgt: 10bf9f8a000 data_offset: 10487c00d60</tt>
<br><tt><readmem: ffffffff804eda00, KVADDR, "cpu_pda entry", 128, (FOE),
930580></tt>
<br><tt>CPU6: level4_pgt: 100f7f08000 data_offset: 10887c00d60</tt>
<br><tt><readmem: ffffffff804eda80, KVADDR, "cpu_pda entry", 128, (FOE),
930580></tt>
<br><tt>CPU7: level4_pgt: 107f9f8e000 data_offset: 10c87c03f60</tt>
<br><tt><readmem: 10008000084, KVADDR, "tss_struct ist array", 56, (FOE),
90c5b0></tt>
<br><tt><readmem: 10408119e84, KVADDR, "tss_struct ist array", 56, (FOE),
90c5e8></tt>
<br><tt>crash: seek error: kernel virtual address: 10408119e84  type:
"tss_struct ist array"</tt><tt></tt>
<p><tt>They weren't *read* from there at that point, but it shows that</tt>
<br><tt>there was memory in that neighborhood.  Anyway, the "seek
error"</tt>
<br><tt>from LKCD means that the physical page couldn't be found in the</tt>
<br><tt>dumpfile by lkcd_lseek():</tt><tt></tt>
<p><tt>/*</tt>
<br><tt> *  Read from an LKCD formatted dumpfile.</tt>
<br><tt> */</tt>
<br><tt>int</tt>
<br><tt>read_lkcd_dumpfile(int fd, void *bufptr, int cnt, ulong addr, physaddr_t
paddr)</tt>
<br><tt>{</tt>
<br><tt>        set_lkcd_fp(fp);</tt><tt></tt>
<p><tt>        if (!lkcd_lseek(paddr))</tt>
<br><tt>               
return SEEK_ERROR;</tt><tt></tt>
<p><tt>        if (lkcd_read((void *)bufptr,
cnt) != cnt)</tt>
<br><tt>               
return READ_ERROR;</tt><tt></tt>
<p><tt>        return cnt;</tt>
<br><tt>}</tt><tt></tt>
<p><tt>I can't really help you from that point on, though...</tt><tt></tt>
<p><tt>Dave</tt>
<br><tt></tt> </html>