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 |
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 11:06 AM. |
VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.