Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Crash Utility (http://www.linux-archive.org/crash-utility/)
-   -   Crash-utility Digest, Vol 82, Issue 6 (http://www.linux-archive.org/crash-utility/680630-crash-utility-digest-vol-82-issue-6-a.html)

chenbo lee 07-06-2012 06:59 AM

Crash-utility Digest, Vol 82, Issue 6
 
Dear ,The place is at value_search in symbols.c line 4252,I must apologize for my careless.*
2012/7/5 <crash-utility-request@redhat.com>

Send Crash-utility mailing list submissions to

* * * * crash-utility@redhat.com



To subscribe or unsubscribe via the World Wide Web, visit

* * * * https://www.redhat.com/mailman/listinfo/crash-utility

or, via email, send a message with subject or body 'help' to

* * * * crash-utility-request@redhat.com



You can reach the person managing the list at

* * * * crash-utility-owner@redhat.com



When replying, please edit your Subject line so it is more specific

than "Re: Contents of Crash-utility digest..."





Today's Topics:



* *1. crash read symbols bug (chenbo lee)

* *2. ptov command (Karlsson, Jan)

* *3. Re: ptov command (Dave Anderson)

* *4. Re: crash seek error, * * kernel_config_data and

* * * cpu_possible_mask (Dave Anderson)





----------------------------------------------------------------------



Message: 1

Date: Thu, 5 Jul 2012 15:37:41 +0800

From: chenbo lee <lee.chenbo@gmail.com>

To: crash-utility@redhat.com

Subject: [Crash-utility] crash read symbols bug

Message-ID:

* * * * <CAFvkxTjC7JJrs4RVCPMc81sVx=VepqUaNov9pi3Mx1DQzE9K QA@mail.gmail.com>

Content-Type: text/plain; charset="iso-8859-1"



>

>

> Dear ,

* * *I ported crash tool to Loongson platform which is a Mips-like CPU

developed by Institute of Computing Technology,Chinese Academic of science.

* * *In my work process,I found a bug in crash when run on Loongson

platform.but the bug doesn't happen in x86 platform. Funcation name

is value_search_base_kernel in symbols.c ,line 4302,version

is crash-6.0.8. code segments as follow:



* * * *for ( ; sp < st->symend; sp++) {

* * * * * * * * if (value == sp->value) {

* * * * * * * * * * * * if (offset)

* * * * * * * * * * * * * * * * *offset = 0;

* * * * * * * * * * * * return((struct syment *)sp);

* * * * * * * * }

* * * * * * * * if (sp->value > value) {

* * * * * * * * * * * * if (offset)

* * * * * * * * * * * * * * * * *offset = value - ((sp-1)->value);

* * * * * * * * * * * * return((struct syment *)(sp-1));

* * * * * * * * }

* * * * }



* * *sp-1 will be NULL if sp pointer the first element in symbol table, *so

(sp-1)->value will cause segment fault.

* * *So I modify the code segment as follow:

* * * * * * * * * * *if (sp->value > value) {

* * * * * * * * * * * * if (sp - st->symtable == 0) return NULL;

* * * * * * * * * * * * if (offset)

* * * * * * * * * * * * * * * * *offset = value - ((sp-1)->value);

* * * * * * * * * * * * *return((struct syment *)(sp-1));

* * * * * * * * * * * }

* * *Is that OK?

* * * I wish you all the best.

-------------- next part --------------

An HTML attachment was scrubbed...

URL: <https://www.redhat.com/archives/crash-utility/attachments/20120705/84260549/attachment.html>




------------------------------



Message: 2

Date: Thu, 5 Jul 2012 13:01:45 +0200

From: "Karlsson, Jan" <Jan.Karlsson@sonymobile.com>

To: "Discussion list for crash utility usage, * maintenance and

* * * * development" * *<crash-utility@redhat.com>

Subject: [Crash-utility] ptov command

Message-ID:

* * * * <6DFA1B20D858A14488A66D6EEDF26AA35D6D7D4A25@seldmb x03.corpusers.net>

Content-Type: text/plain; charset="us-ascii"



Hi Dave



I have a question about the ptov command. Ptov only handles kernel virtual addresses and their corresponding physical addresses. However if you give ptov a physical address that does not correspond to a kernel virtual address it still answers with an address. Users might get confused and do not know when to trust ptov, especially as the inverse command vtop always works.




So I would like to restrict ptov to give a result only when it is valid. The idea I have is that if ptov returns a valid virtual address then vtop on that address should give the same physical address back again. True??




cmd_ptov() in memory.c

* ....

* vaddr = PTOV(paddr);

* kvtop(0, vaddr, &paddr_tst, 0);

* if (paddr != paddr_tst) ... invalid vaddr, do not print it ...



Any comments?



Jan



Jan Karlsson

Senior Software Engineer

MIB



Sony Mobile Communications

Tel: +46703062174

sonymobile.com<http://sonymobile.com/>



[cid:image001.jpg@01CD5AAD.EB8A3DC0]



-------------- next part --------------

An HTML attachment was scrubbed...

URL: <https://www.redhat.com/archives/crash-utility/attachments/20120705/cc8774a6/attachment.html>


-------------- next part --------------

A non-text attachment was scrubbed...

Name: image001.jpg

Type: image/jpeg

Size: 2843 bytes

Desc: image001.jpg

URL: <https://www.redhat.com/archives/crash-utility/attachments/20120705/cc8774a6/attachment.jpg>




------------------------------



Message: 3

Date: Thu, 05 Jul 2012 09:47:57 -0400 (EDT)

From: Dave Anderson <anderson@redhat.com>

To: "Discussion list for crash utility usage, * maintenance and

* * * * development" <crash-utility@redhat.com>

Subject: Re: [Crash-utility] ptov command

Message-ID:

* * * * <0105f7e9-971b-4fcf-a69c-5d187cb3e73b@zmail15.collab.prod.int.phx2.redhat.c om>



Content-Type: text/plain; charset=utf-8







----- Original Message -----

>

> Hi Dave

>

> I have a question about the ptov command. Ptov only handles kernel

> virtual addresses and their corresponding physical addresses.

> However if you give ptov a physical address that does not correspond

> to a kernel virtual address it still answers with an address. Users

> might get confused and do not know when to trust ptov, especially as

> the inverse command vtop always works.

>

> So I would like to restrict ptov to give a result only when it is

> valid. The idea I have is that if ptov returns a valid virtual

> address then vtop on that address should give the same physical

> address back again. True??

>

> cmd_ptov() in memory.c

>

> ....

>

> vaddr = PTOV(paddr);

> kvtop(0, vaddr, &paddr_tst, 0);

> if (paddr != paddr_tst) ... invalid vaddr, do not print it ...

>

> Any comments?

>

> Jan



Sounds reasonable, at least for the 32-bit arches. *I don't think it's

necessary for any 64-bit arch. *And you'd also need to account for kvtop()

failing outright (and returning FALSE).



Dave







------------------------------



Message: 4

Date: Thu, 05 Jul 2012 10:06:59 -0400 (EDT)

From: Dave Anderson <anderson@redhat.com>

To: "Discussion list for crash utility usage, * maintenance and

* * * * development" <crash-utility@redhat.com>

Subject: Re: [Crash-utility] crash seek error, *kernel_config_data and

* * * * cpu_possible_mask

Message-ID:

* * * * <5e0f87a1-291e-46b1-9410-8bbce0293c89@zmail15.collab.prod.int.phx2.redhat.c om>



Content-Type: text/plain; charset=utf-8







----- Original Message -----

>

> Hi, I'm happy to ask developers for help , I'm really confused for my

> crash error.

>

> My computer room is running 60 nodes,OS: suse 11 sp1 x86_64

> Kernel:2.6.32.12-0.7-default Crash:crash-5.0.1-1.5.5

>

> recently , server often kernel crash, Kdump service dump the vmcore

> in /var/crash/happen-date/vmcore,

>

> I installed the kernel-debuginfo so that check out why crash ,but I

> got this:

>

>

>

> linux:~/bb # crash -d8 vmlinux-2.6.32.12-0.7-default vmlinux-2.6.32.12-0.7-default.debug vmcore

>

> crash 5.0.1

> Copyright (C) 2002-2010 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.

>

> compressed kdump: header->utsname.machine:

> diskdump_data:

> filename: (null)

> flags: 6 (KDUMP_CMPRS_LOCAL|ERROR_EXCLUDED)

> dfd: 3

> ofp: 0

> machine_type: 62 (EM_X86_64)

>

> header: ccdfe0

> signature: "KDUMP "

> header_version: 1

> utsname:

> sysname:

> nodename:

> release:

> version:

> machine:

> domainname:

> timestamp:

> tv_sec: 0

> tv_usec: 0

> status: 0 ()

> block_size: 4096

> sub_hdr_size: 1

> bitmap_blocks: 400

> max_mapnr: 6553600

> total_ram_blocks: 0

> device_blocks: 0

> written_blocks: 0

> current_cpu: 0

> nr_cpus: 1

> tasks[nr_cpus]: 0

>

> sub_header: 0 (n/a)

>

> sub_header_kdump: cceff0

> phys_base: 0

> dump_level: 0 (0x0)

>

> data_offset: 192000

> block_size: 4096

> block_shift: 12

> bitmap: 7fcca1e01010

> bitmap_len: 1638400

> dumpable_bitmap: 7fcca1002010

> byte: 0

> bit: 0

> compressed_page: ce3220

> curbufptr: 0

>

> page_cache_hdr[0]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cd3210

> pg_hit_count: 0

> page_cache_hdr[1]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cd4210

> pg_hit_count: 0

> page_cache_hdr[2]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cd5210

> pg_hit_count: 0

> page_cache_hdr[3]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cd6210

> pg_hit_count: 0

> page_cache_hdr[4]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cd7210

> pg_hit_count: 0

> page_cache_hdr[5]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cd8210

> pg_hit_count: 0

> page_cache_hdr[6]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cd9210

> pg_hit_count: 0

> page_cache_hdr[7]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cda210

> pg_hit_count: 0

> page_cache_hdr[8]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cdb210

> pg_hit_count: 0

> page_cache_hdr[9]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cdc210

> pg_hit_count: 0

> page_cache_hdr[10]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cdd210

> pg_hit_count: 0

> page_cache_hdr[11]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cde210

> pg_hit_count: 0

> page_cache_hdr[12]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: cdf210

> pg_hit_count: 0

> page_cache_hdr[13]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: ce0210

> pg_hit_count: 0

> page_cache_hdr[14]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: ce1210

> pg_hit_count: 0

> page_cache_hdr[15]:

> pg_flags: 0 ()

> pg_addr: 0

> pg_bufptr: ce2210

> pg_hit_count: 0

>

> page_cache_buf: cd3210

> evict_index: 0

> evictions: 0

> accesses: 0

> cached_reads: 0

> valid_pages: cd0000

> crash: pv_init_ops exists: ARCH_PVOPS

> compressed kdump: phys_base: 0

> gdb vmlinux-2.6.32.12-0.7-default.debug

> 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 "x86_64-unknown-linux-gnu"...

> GETBUF(248 -> 0)

> GETBUF(1500 -> 1)

>

> FREEBUF(1)

> FREEBUF(0)

> <readmem: ffffffff8141ae40, KVADDR, "kernel_config_data", 32768, ROE), 1ab66b0>

> addr: ffffffff8141ae40 paddr: 141ae40 cnt: 448

> crash: seek error: kernel virtual address: ffffffff8141ae40 type: "kernel_config_data"

> WARNING: cannot read kernel_config_data

> GETBUF(248 -> 0)

> FREEBUF(0)

> GETBUF(512 -> 0)

> <readmem: ffffffff81413640, KVADDR, "cpu_possible_mask", 8, (FOE), 7fff84995368>

> addr: ffffffff81413640 paddr: 1413640 cnt: 8

> crash: seek error: kernel virtual address: ffffffff81413640 type: "cpu_possible_mask"

>

> if I use --minimal can got crash> but It limits a lot..

>

> something like crash can't find cpu_possible_mask and

> cpu_possible_mask in vmcore I guess,

>

> I Google it and find some email talking about this , read the

> whitepaper writed by anderson, but I can't resolve it.

>

> any help I am really appreciated . Any other infomation need I

> provide, please tell me ,I'll reply as soon as possible.



Well for starters, crash-5.0.1 is quite old, and crash-5.0.1-1.5.5 is

a SUSE derivative, and typically I prefer to not get involved too

deeply into debugging issues with (1) older, and (2) derivative versions

of crash.



That being said, for some reason, when trying to access the physical pages

at 141ae40 and 1413640, the compressed kdump is returning SEEK_ERRORs,

which means that those two pages could not be found in the dumpfile.

Since they are both static kernel symbols that are below "edata", one

would expect that they would be there, even if the compressed kdump

had filtered out user pages, cache pages, zero-pages, etc.



A couple things you can try:



(1) Run "crash --minimal ..." on the vmcore, and enter:



* crash> rd linux_banner 30



When I run it on RHEL6 2.6.32-based system it looks like this:



* crash> rd linux_banner 30

* ffffffff81600020: *65762078756e694c 2e32206e6f697372 * Linux version 2.

* ffffffff81600030: *3032322d32332e36 3638782e366c652e * 6.32-220.el6.x86

* ffffffff81600040: *636f6d282034365f 7840646c6975626b * _64 (mockbuild@x

* ffffffff81600050: *622e3430302d3638 736f622e646c6975 * 86-004.build.bos

* ffffffff81600060: *2e7461686465722e 63672820296d6f63 * .redhat.com) (gc

* ffffffff81600070: *6f69737265762063 20352e342e34206e * c version 4.4.5

* ffffffff81600080: *3431323031313032 6148206465522820 * 20110214 (Red Ha

* ffffffff81600090: *2d352e342e342074 2943434728202936 * t 4.4.5-6) (GCC)

* ffffffff816000a0: *4d53203123202920 6f4e206465572050 * *) #1 SMP Wed No

* ffffffff816000b0: *303a383020392076 5453452033313a33 * v 9 08:03:13 EST

* ffffffff816000c0: *00000a3131303220 0000000000000000 * *2011...........

* ffffffff816000d0: *0000000000000000 0000000000000000 * ................

* ffffffff816000e0: *6973726576207325 6d28207325206e6f * %s version %s (m

* ffffffff816000f0: *646c6975626b636f 3430302d36387840 * ockbuild@x86-004

* ffffffff81600100: *622e646c6975622e 61686465722e736f * .build.bos.redha

* crash>



The "Linux version..." string should line up as shown above. *What happens

when you do that?



(2) Log onto the machine that crashed -- which is still presumably running

* * the vmlinux-2.6.32.12-0.7-default kernel -- and try to bring up crash

* * on the live system:



*$ crash vmlinux-2.6.32.12-0.7-default vmlinux-2.6.32.12-0.7-default.debug



What happens then?



Dave







------------------------------



--

Crash-utility mailing list

Crash-utility@redhat.com

https://www.redhat.com/mailman/listinfo/crash-utility





End of Crash-utility Digest, Vol 82, Issue 6

********************************************



--
Crash-utility mailing list
Crash-utility@redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility

Dave Anderson 07-06-2012 01:19 PM

Crash-utility Digest, Vol 82, Issue 6
 
----- Original Message -----
>
> Dear ,
> The place is at value_search in symbols.c line 4252,I must apologize
> for my careless.

OK -- but the same question still applies:

struct syment *
value_search(ulong value, ulong *offset)
{
struct syment *sp, *spnext;

if (!in_ksymbol_range(value))
return((struct syment *)NULL);


How does it get past in_ksymbol_range()? What is the value
of st->symtable[0].value and the passed-in "value"?

Dave

--
Crash-utility mailing list
Crash-utility@redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility


All times are GMT. The time now is 03:55 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.