[Crash-utility] patch to add vmss memory regions support

Dave Anderson anderson at redhat.com
Fri Mar 27 18:05:47 UTC 2015


Dyno,

I've got the sample multi-region dumpfile -- thanks for that.

This latest patch tests OK on all three dumpfiles.  But can you please
remove the remaining assert() calls as I requested in my previous email?

Thanks,
  Dave


----- Original Message -----
> Dave,
> 
>   An assert i put caused the crash, workstation VM memory has more block item
>   than i thought.
> fixed it in the patch and tested against all the dump i have. i will try to
> provide a 4GB memory dump later.
> 
> ESX VM 3G Memory
> ================
> - Group: memory pos=0x1f6f6 size=0xc000090c
> ------------------------------------
> align_mask[0, 0]                         => 0x00ffff
> regionsCount                             => 0x000000
> Memory[0, 0]                             => BLOCK, pos=0x20000,
> size=0xc0000000
> 
> ESX VM 4G Memory
> ================
> - Group: memory pos=0x1f6f6 size=0x10000090c
> -----------------------------------
> align_mask[0, 0]                         => 0x00ffff
> regionsCount                             => 0x000002
> regionPageNum[0]                         => 0x000000
> regionPPN[0]                             => 0x000000
> regionSize[0]                            => 0x0c0000
> regionPageNum[1]                         => 0x0c0000
> regionPPN[1]                             => 0x100000
> regionSize[1]                            => 0x040000
> Memory[0, 0]                             => BLOCK, pos=0x20000,
> size=0x100000000
> 
> WS VM Memory
> ============
> - Group: memory pos=0x93b1 size=0x10098
> ----------------------------------------
> align_mask[0, 0]                         => 0x00ffff
> regionsCount                             => 0x000000
> hotSetSize                               => 0x040000
> hotSet                                   => BLOCK, pos=0x9405, size=0x8000
> MainMemPageZeroStateSize                 => 0x040000
> MainMemKnownZero                         => BLOCK, pos=0x11447, size=0x8000
> 
> rgds,
> Dyno
> 
> On 3/26/15 1:12 PM, Dave Anderson wrote:
> > 
> > 
> > ----- Original Message -----
> >> Dave,
> >>   updated the patch and please review. thanks.
> >>   - the page_size/page_shift problem.
> >>   - change type cast to union.
> >>   - the read_vmware_vmss() regression.
> >>
> >> rgds,
> >> Dyno
> > 
> > 
> > Dyno,
> > 
> > Since you cannot make any additional sample vmss2core-generated
> > dumpfiles available to me, I can only test this latest patch
> > on the two dumpfile/kernel pairs that you gave me in February:
> >   
> >   vmlinux-2.6.32-431.el6 CentOS6.5-11bd56db.vmss
> > 
> > and
> > 
> >   vmlinux-3.13.0-39-generic Ubuntu1404_64bit-65993542.vmss
> >   (with its companion Ubuntu1404_64bit-65993542.vmem file)
> > 
> > The CentOS kernel works OK with your patch:
> >   
> >   $ crash vmlinux-2.6.32-431.el6 CentOS6.5-11bd56db.vmss
> >   
> >   crash 7.1.1rc13
> >   Copyright (C) 2002-2014  Red Hat, Inc.
> >   Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
> >   Copyright (C) 1999-2006  Hewlett-Packard Co
> >   Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
> >   Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
> >   Copyright (C) 2005, 2011  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.6
> >   Copyright (C) 2013 Free Software Foundation, Inc.
> >   License GPLv3+: GNU GPL version 3 or later
> >   <https://urldefense.proofpoint.com/v2/url?u=http-3A__gnu.org_licenses_gpl.html&d=AwIFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=g2Vka_25x09RSowRkQw8pA&m=iQzEiRx9c9mhk2AN2ZgUquvryNUKAR8a3H2BxGelV-8&s=UTmIfMl3-60oCUaY2i-0rZlb-o78kBVx6f9F90s9r4Q&e=
> >   >
> >   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"...
> >   
> >         KERNEL: vmlinux-2.6.32-431.el6
> >       DUMPFILE: CentOS6.5-11bd56db.vmss
> >           CPUS: 4
> >           DATE: Tue Feb  3 18:22:03 2015
> >         UPTIME: 00:01:06
> >   LOAD AVERAGE: 0.71, 0.22, 0.07
> >          TASKS: 302
> >       NODENAME: promd-1s-dhcp37.eng.vmware.com
> >        RELEASE: 2.6.32-431.el6.x86_64
> >        VERSION: #1 SMP Fri Nov 22 03:15:09 UTC 2013
> >        MACHINE: x86_64  (2394 Mhz)
> >         MEMORY: 511.5 MB
> >          PANIC: ""
> >            PID: 0
> >        COMMAND: "swapper"
> >           TASK: ffffffff81a8d020  (1 of 4)  [THREAD_INFO: ffffffff81a00000]
> >            CPU: 0
> >          STATE: TASK_RUNNING (ACTIVE)
> >        WARNING: panic task not found
> >   
> >   crash>
> >   
> > But the Ubuntu1404_64bit-65993542.vmss fails miserably:
> > 
> >   $ crash Ubuntu1404_64bit-65993542.vmss vmlinux-3.13.0-39-generic
> >   
> >   crash 7.1.1rc13
> >   Copyright (C) 2002-2014  Red Hat, Inc.
> >   Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
> >   Copyright (C) 1999-2006  Hewlett-Packard Co
> >   Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
> >   Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
> >   Copyright (C) 2005, 2011  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.
> >    
> >   crash: vmware_vmss.c:169: vmware_vmss_init: Assertion `__extension__ ({
> >   size_t __s1_len, __s2_len; (__builtin_constant_p (name) &&
> >   __builtin_constant_p ("Memory") && (__s1_len = strlen (name), __s2_len =
> >   strlen ("Memory"), (!((size_t)(const void *)((name) + 1) -
> >   (size_t)(const void *)(name) == 1) || __s1_len >= 4) &&
> >   (!((size_t)(const void *)(("Memory") + 1) - (size_t)(const void
> >   *)("Memory") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name,
> >   "Memory") : (__builtin_constant_p (name) && ((size_t)(const void
> >   *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len =
> >   strlen (name), __s1_len < 4) ? (__builtin_constant_p ("Memory") &&
> >   ((size_t)(const void *)(("Memory") + 1) - (size_t)(const void
> >   *)("Memory") == 1) ? __builtin_strcmp (name, "Memory") : (__extension__
> >   ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char
> >   *) ("Memory"); register int __result = (((__const unsigned char *)
> >   (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result ==
> >   0)
> { __result = (((__const unsigned char *) (__const char *) (name))[1] -
> __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const
> unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
> __result == 0) __result = (((__const unsigned char *) (__const char *)
> (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("Memory")
> && ((size_t)(const void *)(("Memory") + 1) - (size_t)(const void
> *)("Memory") == 1) && (__s2_len = strlen ("Memory"), __s2_len < 4) ?
> (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) -
> (size_t)(const void *)(name) == 1) ? __builtin_strcmp (name, "Memory") :
> (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *)
> (__const char *) (name); register int __result = __s1[0] - ((__const
> unsigned char *) (__const char *) ("Memory"))[0]; if (__s2_len > 0 &&
> __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const
> char *) ("Memory"))[1]); if (__s2_len > 1 && __result == 0) { __resul
> t = (__s1[2] - ((__const unsigned char *) (__const char *) ("Memory"))[2]);
> if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned
> char *) (__const char *) ("Memory"))[3]); } } __result; }))) :
> __builtin_strcmp (name, "Memory")))); }) == 0' failed.
> >   Aborted (core dumped)
> >   $
> >   
> > Note that crash-7.1.0 works OK:
> >   
> >   $ /usr/bin/crash Ubuntu1404_64bit-65993542.vmss vmlinux-3.13.0-39-generic
> >   
> >   crash 7.1.0
> >   Copyright (C) 2002-2014  Red Hat, Inc.
> >   Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
> >   Copyright (C) 1999-2006  Hewlett-Packard Co
> >   Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
> >   Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
> >   Copyright (C) 2005, 2011  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.
> >    
> >   vmw: Memory dump is not part of this vmss file.
> >   vmw: Try to locate the companion vmem file ...
> >   vmw: vmem file: Ubuntu1404_64bit-65993542.vmem
> >   
> >   GNU gdb (GDB) 7.6
> >   Copyright (C) 2013 Free Software Foundation, Inc.
> >   License GPLv3+: GNU GPL version 3 or later
> >   <https://urldefense.proofpoint.com/v2/url?u=http-3A__gnu.org_licenses_gpl.html&d=AwIFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=g2Vka_25x09RSowRkQw8pA&m=iQzEiRx9c9mhk2AN2ZgUquvryNUKAR8a3H2BxGelV-8&s=UTmIfMl3-60oCUaY2i-0rZlb-o78kBVx6f9F90s9r4Q&e=
> >   >
> >   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"...
> >   
> >         KERNEL: vmlinux-3.13.0-39-generic
> >       DUMPFILE: Ubuntu1404_64bit-65993542.vmss
> >           CPUS: 1
> >           DATE: Thu Nov 13 14:10:53 2014
> >         UPTIME: 2 days, 03:40:33
> >   LOAD AVERAGE: 0.00, 0.01, 0.05
> >          TASKS: 669
> >       NODENAME: ubuntu
> >        RELEASE: 3.13.0-39-generic
> >        VERSION: #66-Ubuntu SMP Tue Oct 28 13:30:27 UTC 2014
> >        MACHINE: x86_64  (2693 Mhz)
> >         MEMORY: 1 GB
> >          PANIC: ""
> >            PID: 0
> >        COMMAND: "swapper/0"
> >           TASK: ffffffff81c15480  [THREAD_INFO: ffffffff81c00000]
> >            CPU: 0
> >          STATE: TASK_RUNNING
> >        WARNING: panic task not found
> >   
> >   crash>
> >   
> > Anyway, besides fixing whatever the problem is, please remove the assert()
> > calls entirely.  They did not exist in the original vmware_vmss.c file,
> > and shouldn't be added now.
> > 
> > assert() is not used by the top-level crash sources (except for qemu.c
> > and qemu-load.c, which came from a 3rd party, and I didn't feel like
> > changing
> > all of them).  Instead, please use the crash convention by testing for the
> > anomoly, and then send an appropriate error message to error(FATAL, ...),
> > which will kill the crash session if it's during session initialization,
> > or kill the current command if it's during crash runtime.
> > 
> > Thanks,
> >   Dave
> > 
> 




More information about the Crash-utility mailing list