Name Status Last Modified Last Commit
lp://qastaging/debian/crash 1 Development 2015-05-27 11:20:02 UTC
48. * Autopkgtest fix from Martin Pitt <m...

Author: Troy Heber
Revision Date: 2015-05-27 11:20:02 UTC

* Autopkgtest fix from Martin Pitt <mpitt@debian.org> (Closes: #756969):
 - Drop sudo calls; they potentially hang forever asking for a password or
   might get denied, destroy the environment, and are not necessary as the
   test already has "needs-root".
 - Fix invalid indentation of here-doc
 - Suppress expected stderr output of apt-key (which causes a test failure)
 - Drop "set -x", as that causes stderr output and the called commands are
   already verbose enough.
 - Drop -security pocket for Ubuntu's ddebs.u.c., as that does not exist.

* Fix for two minor issues with the "net" command. Without the patch, the
  "net -a" option appends its correct output with the command's "Usage:"
  message; and if either the "net -x" or "net -d" options are used without
  also specifying "-s" or "-S", the error message would indicate "net:
  illegal flag: 800000" or "net: illegal flag: 1000000" instead of showing
  the command's "Usage:" message.

* If the kernel (live or dumpfile) has the TAINT_LIVEPATCH bit set, or if
  the Red Hat "kpatch" module is installed, the tag "[LIVEPATCH]" will be
  displayed next to the kernel name in the initial system banner and by the
  "sys" command. This new tag replaces the "[KPATCH]" tag that was
  introduced in crash-7.0.7.

* Addressed three Coverity Scan complaints in vmware_vmss.c:

  50:leaked_storage: Variable "fp" going out of scope leaks the
     storage it points to.
  53:leaked_storage: Variable "fp" going out of scope leaks the
     storage it points to.
 256:warning: Use of memory after it is freed

* Remove the LKCD-only "propeller spinner" seen when a dumpfile read
  requires more than 2048 page header accesses. This was put in place
  because of the non-random-access design of LKCD dumpfiles. Without the
  patch, the spinner display is intermingled with command output, which
  complicates the parsing of the output.

* Fix to support the Linux version increment from 3 to 4. Without the
  patch, both dumpfile and live sessions fail during initialization, issuing
  the message "WARNING: kernel version inconsistency between vmlinux and
  dumpfile" or "WARNING: kernel version inconsistency between vmlinux and
  live memory", followed by the nonsensical fatal error message "crash:
  incompatible arguments: vmlinux is not SMP -- vmcore is SMP" or "crash:
  incompatible arguments: vmlinux is not SMP -- live system is SMP". To
  prevent unexpected kernel version bumps in the future, support has been
  added for version 5.

* Add support for more than 16TB of physical memory space in the SADUMP
  dumpfile format. Without the patch, there is a limitation caused by
  several 32-bit members of dump_header structure, in particular the
  max_mapnr member, which overflows if the dumpfile contains more than 16TB
  of physical memory space. The header_version member of the dump_header
  structure has been increased from 0 to 1 in this extended new format, and
  the new 64-bit members will be used.

* Fix for command lines that are redirected to a pipe. Without the patch,
  if an external piped-to command contains a quoted string that includes a
  "|" character, the command fails with the message "crash: pipe operation
  failed".

* Fix for insecure temporary file usage in _rl_tropen() as reported by
  readline library CVE-2014-2524.

* When the gdb-<version>.patch file has changed and a rebuild is done from
  within a previously-existing build tree, the "patch -N" option is used to
  ignore patches that have been previously applied; this patch also applies
  the "patch -r-" option to prevent unnecessary .rej files from being
  created.

* Fix to account for Xen hypervisor's "domain" structure member name change
  from "is_paused_by_controller" to "controller_pause_count". Without the
  patch, in Xen 4.2.5 and later, the crash session fails during
  initialization with the error message 'crash: invalid structure member
  offset: domain_is_paused_by_controller".

* During initialization, reject useless ARM64 "(A)" and "(a)" absolute
  symbols that are below the text region. Without the patch, several
  recently-introduced absolute symbols have been introduced into the kernel,
  which will be displayed by "sym -l" prior to the first kernel virtual
  address symbol, and will show up in command output where memory values are
  translated into kernel symbol references.

* Fix for ARM64 kernels to account for changes in the virtual memory layout
  introduced in Linux 3.17. The vmalloc region end address, and the vmemmap
  start and end addresses are now calculated at kernel build time, because
  they depend upon the size of a struct page. Accordingly, the crash
  utility needs to calculate those three address values dynamically, after
  the embedded gdb module has initialized. Without the patch, reads of page
  structures return invalid data due to incorrect virtual-to-physical
  translations of memory in the vmemmap range. This in turn causes commands
  that require page structure contents to fail or show invalid data, such as
  "kmem -p", "kmem -[sS]", and the "kmem -[fF]" options.

* Fix to support ELF vmcore dumpfiles whose PT_LOAD file offset values of
  their respective memory segments are not laid out sequentially from low to
  high in the dumpfile. This has only been seen in ELF dumpfiles created by
  VMware's "vmss2core -M" facility. Without the patch, the crash session
  may fail during initialization, either with the message "cannot malloc ELF
  header buffer", or "crash: <dumpfile>: not a supported file format".

* Enhancement to the support of VMware .vmss suspended state dumpfiles.
  There may be holes in the memory address saved for PCI, etc. In such
  cases, the memory dump is divided into regions. With this patch, up to 3
  memory regions are supported.

* Fortified the error handling of task gathering from the pid_hash[] chains
  during session initialization. If a chain has been corrupted, the patch
  prevents the sequence from entering an infinite loop, and the error
  messages associated with corrupt/invalid chains have been updated to
  report the pid_hash[] index number.

* Implemented a new STRDUPBUF() utility that will duplicate an existing
  string into a buffer allocated with GETBUF(). As is the case with any
  buffer allocated with GETBUF(), it is only meant to exist during the
  life-span of the current command. If it is not explicitly freed via
  FREEBUF(), then it will be freed automatically prior to the next command.

* Implemented a new fill_struct_member_data() function that gathers a bundle
  of data that describes a structure member. The function receives a
  pointer to a struct_member_data structure, in which the caller has
  initialized the "structure" and "member" name pointers:

  struct struct_member_data {
          char *structure;
          char *member;
          long type;
          long unsigned_type;
          long length;
          long offset;
          long bitpos;
          long bitsize;
  };

  A gdb "printm" command is crafted using those two fields, and the output
  of the command is used to initialize the remaining six fields. Adapted
  from Qiao Nuohan's "pstruct" extension module.

* Implemented a new "runq -c cpu(s)" option to display the run queue data of
  specified cpus. It can be used in conjunction with all runq command
  options. The cpus must be specified in a comma- and/or dash-separated
  list; for examples, "3", "1,8,9", "1-23", or "1,8-15".

* Build extension modules that utilize the generic extensions/Makefile
with -g. In addition, build the snap.c extension module with -g.

* Several fixes, updates, and enhancements for 32-bit MIPS support:
  (1) The MIPS general purpose registers in the elf_gregset_t
      don't start at index 0 but at index 6.
  (2) Adjust for the kernel's pt_regs structure changes between
      kernel versions. For example, fields are inserted into the
      middle based on build time options, and the amount of padding
      at the head of the structure was changed relatively recently.
      To handle this, split the structure definition into two parts
      and get the offsets of these two parts dynamically.
  (3) Do not display each parsed kernel symbol during initialization
      when invoked with "crash -d8".
  (4) Add support for loading raw MIPS ramdump dumpfiles.
  (5) Add support for compressed kdump dumpfiles.

* Fix for a typo in "help foreach", and a fix for a spelling error in "help
  input".

* Fix for "and and" and "the the" typos in the README file.

* Fix to address the Xen 4.5.0 hypervisor symbol name change from "dom0" to
  "hardware_domain". Without the patch, the crash session fails with the
  error message "crash: cannot resolve: dom0".

* Fix for a regression in crash-7.1.0 that causes failures when the "crash
  -t" option is run on a live system, and when analyzing remote Linux
  kernels. Without the patch, "crash -t" on a live system fails with the
  message "crash: cannot open remote memory source: /dev/mem", and attempts
  to analyze a Linux kernel remotely just shows the kernel timestamp and
  exits immediately.

* Speed up the session invocation time of "flattened" format dumpfiles
  created by the makedumpfile(8) facility. When sorting the blocks of
  memory by their intended ELF or compressed kdump file offsets, the patch
  replaces the bubble-sort method that is currently used with an insertion
  sort method.

* Remove the non-existent "-L" option from the "ps" command's mutually-
  exclusive options error message.

* Fix for the "irq", "mount", "kmem -p" and "kmem -v" commands when they are
  used in an input file. If more than one of any of those four commands are
  used in an input file, the output of the second and subsequent command
  instances will not display their respective command headers.

* Implemented a new "kmem -m" option that is similar to "kmem -p", but it
  allows the user to specify the page struct members to be displayed. The
  option takes a comma-separated list of one or more page struct members,
  which will be displayed following the page structure address. The "flags"
  member will always be expressed in hexadecimal format, and the "_count"
  and "_mapcount" members will always be expressed in decimal format.
  Otherwise, all other members will be displayed in hexadecimal format
  unless the current output radix is 10 and the member is a signed/unsigned
  integer. Members that are data structures may be specified by the data
  structure's member name, or expanded to specify a member of that data
  structure. For example, "-m lru" refers to a list_head data structure, in
  which case both the list_head.next and list_head.prev pointer values will
  be displayed; if "-m lru.next" is specified, just the list_head.next value
  will be displayed.

* Support enhancement for the 32-bit MIPS architecture that retrieves the
  per-cpu registers from the NT_PRSTATUS notes stored in the header of
  compressed kdump dumpfiles.

* Fix to remove an invalid warning message on ARM64 if a crash session is
  invoked with the "-d<number>" debug flag. Without the patch, the invalid
  message is "WARNING: SPARSEMEM_EX: questionable section values".

* Remove the leftover ".constructor" build file in the extensions
  subdirectory when "make extensions" is complete, and update the top-level
  .gitignore file to ignore post-build extensions subdirectory files.

* Fix for a segmentation violation generated by the "help -[n|D]" options on
  ARM64 compressed kdumps.

* Additional output for the "help [-D|-n]" options on ARM64. For ELF kdump
  vmcores and compressed kdumps, the elf_prstatus structure in each
  NT_PRSTATUS note will be translated.

* The "help -r" option has been extended to dump the ARM64 registers stored
  in each per-cpu NT_PRSTATUS note in compressed kdump and ELF kdump
  dumpfiles.

* Fix for the ARM64 page size determination on Linux 4.1 and later kernels.
  Without the patch, the crash session fails during initialization with the
  message "crash: invalid/unsupported page size: 98304" on kernels with 64K
  pages. On kernels with 4K pages, the message is "crash:
  invalid/unsupported page size: 6144". In addition, the "-p <page-size>"
  command line override option had no effect on ARM64; that has been fixed
  as well.

* Fix for the DATE display in the initial system banner and by the "sys"
  command to account for the Linux 3.17 change that moved the "timekeeper"
  symbol and structure into a containing tk_core structure; the
  "shadow_timekeeper" timekeeper will be used as an alternative. Without
  the patch, the DATE shows something within a few hours of the Linux epoch,
  such as "Wed Dec 31 18:00:00 1969".

* Fixes for the translation of ARM64 PTEs, as displayed by the "vm -p" and
  "vtop" commands. Without the patch, if "vm -p" references a swapped-out
  page on Linux 4.0 and later kernels, the SWAP location may indicate
  "(unknown swap location)", and will show an invalid OFFSET value; on Linux
  3.13 and later kernels, running "vtop" on a user virtual address
  incorrectly translates the PTE contents of swapped out pages by showing a
  PHYSICAL address and FLAGS translation instead of the SWAP device and
  OFFSET. It is possible that there may be PTE bit translation errors on
  other kernel versions; the patch addresses the changes in ARM64 PTE bit
  definitions made in Linux 3.11, 3.13, and 4.0 kernels.

* Enhanced the "struct.member" display capability of the "struct", "union",
  "task", "list" and "tree" commands. If a specified structure member
  contains an embedded structure, the output may be restricted to just the
  embedded structure by expressing the .member argument as "member.member".
  If a specified structure member is an array, the output may be restricted
  to a single array element by expressing the .member argument as
  "member[index]". Furthermore, these embedded member specifications may
  extend beyond one level deep, for example, by expressing the member
  argument as "member.member.member", or "member[index].member".

* Fix for any command that passes strings to gdb for evaluation, where the
  string contains a parentheses-within-parentheses expression along with a
  ">" or ">>" operator inside the outermost set of parentheses. Without the
  patch, a command such as the following fails like so:

  crash> p ((1+1) >> 1)
  p: gdb request failed: p ((1+1)
  crash>

* Fix for the handling of ARM64 kernel module per-cpu symbols. Without the
  patch, if the debuginfo data of an ARM64 kernel module that contains a
  per-cpu section is loaded by "mod -s <module>" or "mod -S", commands such
  as "bt" or "sym" may incorrectly translate the module's virtual addresses
  to symbol names.

* Fix to support the Linux version increment from 3 to 4. (Closes: #699367)
  Without the patch, both dumpfile and live sessions fail during
  initialization, issuing the message "WARNING: kernel version inconsistency
  between vmlinux and dumpfile" or "WARNING: kernel version inconsistency
  between vmlinux and live memory", followed by the nonsensical fatal error
  message "crash: incompatible arguments: vmlinux is not SMP -- vmcore is
  SMP" or "crash: incompatible arguments: vmlinux is not SMP -- live system
  is SMP"

lp://qastaging/debian/stretch/crash 1 Development 2015-05-27 11:20:02 UTC
48. * Autopkgtest fix from Martin Pitt <m...

Author: Troy Heber
Revision Date: 2015-05-27 11:20:02 UTC

* Autopkgtest fix from Martin Pitt <mpitt@debian.org> (Closes: #756969):
 - Drop sudo calls; they potentially hang forever asking for a password or
   might get denied, destroy the environment, and are not necessary as the
   test already has "needs-root".
 - Fix invalid indentation of here-doc
 - Suppress expected stderr output of apt-key (which causes a test failure)
 - Drop "set -x", as that causes stderr output and the called commands are
   already verbose enough.
 - Drop -security pocket for Ubuntu's ddebs.u.c., as that does not exist.

* Fix for two minor issues with the "net" command. Without the patch, the
  "net -a" option appends its correct output with the command's "Usage:"
  message; and if either the "net -x" or "net -d" options are used without
  also specifying "-s" or "-S", the error message would indicate "net:
  illegal flag: 800000" or "net: illegal flag: 1000000" instead of showing
  the command's "Usage:" message.

* If the kernel (live or dumpfile) has the TAINT_LIVEPATCH bit set, or if
  the Red Hat "kpatch" module is installed, the tag "[LIVEPATCH]" will be
  displayed next to the kernel name in the initial system banner and by the
  "sys" command. This new tag replaces the "[KPATCH]" tag that was
  introduced in crash-7.0.7.

* Addressed three Coverity Scan complaints in vmware_vmss.c:

  50:leaked_storage: Variable "fp" going out of scope leaks the
     storage it points to.
  53:leaked_storage: Variable "fp" going out of scope leaks the
     storage it points to.
 256:warning: Use of memory after it is freed

* Remove the LKCD-only "propeller spinner" seen when a dumpfile read
  requires more than 2048 page header accesses. This was put in place
  because of the non-random-access design of LKCD dumpfiles. Without the
  patch, the spinner display is intermingled with command output, which
  complicates the parsing of the output.

* Fix to support the Linux version increment from 3 to 4. Without the
  patch, both dumpfile and live sessions fail during initialization, issuing
  the message "WARNING: kernel version inconsistency between vmlinux and
  dumpfile" or "WARNING: kernel version inconsistency between vmlinux and
  live memory", followed by the nonsensical fatal error message "crash:
  incompatible arguments: vmlinux is not SMP -- vmcore is SMP" or "crash:
  incompatible arguments: vmlinux is not SMP -- live system is SMP". To
  prevent unexpected kernel version bumps in the future, support has been
  added for version 5.

* Add support for more than 16TB of physical memory space in the SADUMP
  dumpfile format. Without the patch, there is a limitation caused by
  several 32-bit members of dump_header structure, in particular the
  max_mapnr member, which overflows if the dumpfile contains more than 16TB
  of physical memory space. The header_version member of the dump_header
  structure has been increased from 0 to 1 in this extended new format, and
  the new 64-bit members will be used.

* Fix for command lines that are redirected to a pipe. Without the patch,
  if an external piped-to command contains a quoted string that includes a
  "|" character, the command fails with the message "crash: pipe operation
  failed".

* Fix for insecure temporary file usage in _rl_tropen() as reported by
  readline library CVE-2014-2524.

* When the gdb-<version>.patch file has changed and a rebuild is done from
  within a previously-existing build tree, the "patch -N" option is used to
  ignore patches that have been previously applied; this patch also applies
  the "patch -r-" option to prevent unnecessary .rej files from being
  created.

* Fix to account for Xen hypervisor's "domain" structure member name change
  from "is_paused_by_controller" to "controller_pause_count". Without the
  patch, in Xen 4.2.5 and later, the crash session fails during
  initialization with the error message 'crash: invalid structure member
  offset: domain_is_paused_by_controller".

* During initialization, reject useless ARM64 "(A)" and "(a)" absolute
  symbols that are below the text region. Without the patch, several
  recently-introduced absolute symbols have been introduced into the kernel,
  which will be displayed by "sym -l" prior to the first kernel virtual
  address symbol, and will show up in command output where memory values are
  translated into kernel symbol references.

* Fix for ARM64 kernels to account for changes in the virtual memory layout
  introduced in Linux 3.17. The vmalloc region end address, and the vmemmap
  start and end addresses are now calculated at kernel build time, because
  they depend upon the size of a struct page. Accordingly, the crash
  utility needs to calculate those three address values dynamically, after
  the embedded gdb module has initialized. Without the patch, reads of page
  structures return invalid data due to incorrect virtual-to-physical
  translations of memory in the vmemmap range. This in turn causes commands
  that require page structure contents to fail or show invalid data, such as
  "kmem -p", "kmem -[sS]", and the "kmem -[fF]" options.

* Fix to support ELF vmcore dumpfiles whose PT_LOAD file offset values of
  their respective memory segments are not laid out sequentially from low to
  high in the dumpfile. This has only been seen in ELF dumpfiles created by
  VMware's "vmss2core -M" facility. Without the patch, the crash session
  may fail during initialization, either with the message "cannot malloc ELF
  header buffer", or "crash: <dumpfile>: not a supported file format".

* Enhancement to the support of VMware .vmss suspended state dumpfiles.
  There may be holes in the memory address saved for PCI, etc. In such
  cases, the memory dump is divided into regions. With this patch, up to 3
  memory regions are supported.

* Fortified the error handling of task gathering from the pid_hash[] chains
  during session initialization. If a chain has been corrupted, the patch
  prevents the sequence from entering an infinite loop, and the error
  messages associated with corrupt/invalid chains have been updated to
  report the pid_hash[] index number.

* Implemented a new STRDUPBUF() utility that will duplicate an existing
  string into a buffer allocated with GETBUF(). As is the case with any
  buffer allocated with GETBUF(), it is only meant to exist during the
  life-span of the current command. If it is not explicitly freed via
  FREEBUF(), then it will be freed automatically prior to the next command.

* Implemented a new fill_struct_member_data() function that gathers a bundle
  of data that describes a structure member. The function receives a
  pointer to a struct_member_data structure, in which the caller has
  initialized the "structure" and "member" name pointers:

  struct struct_member_data {
          char *structure;
          char *member;
          long type;
          long unsigned_type;
          long length;
          long offset;
          long bitpos;
          long bitsize;
  };

  A gdb "printm" command is crafted using those two fields, and the output
  of the command is used to initialize the remaining six fields. Adapted
  from Qiao Nuohan's "pstruct" extension module.

* Implemented a new "runq -c cpu(s)" option to display the run queue data of
  specified cpus. It can be used in conjunction with all runq command
  options. The cpus must be specified in a comma- and/or dash-separated
  list; for examples, "3", "1,8,9", "1-23", or "1,8-15".

* Build extension modules that utilize the generic extensions/Makefile
with -g. In addition, build the snap.c extension module with -g.

* Several fixes, updates, and enhancements for 32-bit MIPS support:
  (1) The MIPS general purpose registers in the elf_gregset_t
      don't start at index 0 but at index 6.
  (2) Adjust for the kernel's pt_regs structure changes between
      kernel versions. For example, fields are inserted into the
      middle based on build time options, and the amount of padding
      at the head of the structure was changed relatively recently.
      To handle this, split the structure definition into two parts
      and get the offsets of these two parts dynamically.
  (3) Do not display each parsed kernel symbol during initialization
      when invoked with "crash -d8".
  (4) Add support for loading raw MIPS ramdump dumpfiles.
  (5) Add support for compressed kdump dumpfiles.

* Fix for a typo in "help foreach", and a fix for a spelling error in "help
  input".

* Fix for "and and" and "the the" typos in the README file.

* Fix to address the Xen 4.5.0 hypervisor symbol name change from "dom0" to
  "hardware_domain". Without the patch, the crash session fails with the
  error message "crash: cannot resolve: dom0".

* Fix for a regression in crash-7.1.0 that causes failures when the "crash
  -t" option is run on a live system, and when analyzing remote Linux
  kernels. Without the patch, "crash -t" on a live system fails with the
  message "crash: cannot open remote memory source: /dev/mem", and attempts
  to analyze a Linux kernel remotely just shows the kernel timestamp and
  exits immediately.

* Speed up the session invocation time of "flattened" format dumpfiles
  created by the makedumpfile(8) facility. When sorting the blocks of
  memory by their intended ELF or compressed kdump file offsets, the patch
  replaces the bubble-sort method that is currently used with an insertion
  sort method.

* Remove the non-existent "-L" option from the "ps" command's mutually-
  exclusive options error message.

* Fix for the "irq", "mount", "kmem -p" and "kmem -v" commands when they are
  used in an input file. If more than one of any of those four commands are
  used in an input file, the output of the second and subsequent command
  instances will not display their respective command headers.

* Implemented a new "kmem -m" option that is similar to "kmem -p", but it
  allows the user to specify the page struct members to be displayed. The
  option takes a comma-separated list of one or more page struct members,
  which will be displayed following the page structure address. The "flags"
  member will always be expressed in hexadecimal format, and the "_count"
  and "_mapcount" members will always be expressed in decimal format.
  Otherwise, all other members will be displayed in hexadecimal format
  unless the current output radix is 10 and the member is a signed/unsigned
  integer. Members that are data structures may be specified by the data
  structure's member name, or expanded to specify a member of that data
  structure. For example, "-m lru" refers to a list_head data structure, in
  which case both the list_head.next and list_head.prev pointer values will
  be displayed; if "-m lru.next" is specified, just the list_head.next value
  will be displayed.

* Support enhancement for the 32-bit MIPS architecture that retrieves the
  per-cpu registers from the NT_PRSTATUS notes stored in the header of
  compressed kdump dumpfiles.

* Fix to remove an invalid warning message on ARM64 if a crash session is
  invoked with the "-d<number>" debug flag. Without the patch, the invalid
  message is "WARNING: SPARSEMEM_EX: questionable section values".

* Remove the leftover ".constructor" build file in the extensions
  subdirectory when "make extensions" is complete, and update the top-level
  .gitignore file to ignore post-build extensions subdirectory files.

* Fix for a segmentation violation generated by the "help -[n|D]" options on
  ARM64 compressed kdumps.

* Additional output for the "help [-D|-n]" options on ARM64. For ELF kdump
  vmcores and compressed kdumps, the elf_prstatus structure in each
  NT_PRSTATUS note will be translated.

* The "help -r" option has been extended to dump the ARM64 registers stored
  in each per-cpu NT_PRSTATUS note in compressed kdump and ELF kdump
  dumpfiles.

* Fix for the ARM64 page size determination on Linux 4.1 and later kernels.
  Without the patch, the crash session fails during initialization with the
  message "crash: invalid/unsupported page size: 98304" on kernels with 64K
  pages. On kernels with 4K pages, the message is "crash:
  invalid/unsupported page size: 6144". In addition, the "-p <page-size>"
  command line override option had no effect on ARM64; that has been fixed
  as well.

* Fix for the DATE display in the initial system banner and by the "sys"
  command to account for the Linux 3.17 change that moved the "timekeeper"
  symbol and structure into a containing tk_core structure; the
  "shadow_timekeeper" timekeeper will be used as an alternative. Without
  the patch, the DATE shows something within a few hours of the Linux epoch,
  such as "Wed Dec 31 18:00:00 1969".

* Fixes for the translation of ARM64 PTEs, as displayed by the "vm -p" and
  "vtop" commands. Without the patch, if "vm -p" references a swapped-out
  page on Linux 4.0 and later kernels, the SWAP location may indicate
  "(unknown swap location)", and will show an invalid OFFSET value; on Linux
  3.13 and later kernels, running "vtop" on a user virtual address
  incorrectly translates the PTE contents of swapped out pages by showing a
  PHYSICAL address and FLAGS translation instead of the SWAP device and
  OFFSET. It is possible that there may be PTE bit translation errors on
  other kernel versions; the patch addresses the changes in ARM64 PTE bit
  definitions made in Linux 3.11, 3.13, and 4.0 kernels.

* Enhanced the "struct.member" display capability of the "struct", "union",
  "task", "list" and "tree" commands. If a specified structure member
  contains an embedded structure, the output may be restricted to just the
  embedded structure by expressing the .member argument as "member.member".
  If a specified structure member is an array, the output may be restricted
  to a single array element by expressing the .member argument as
  "member[index]". Furthermore, these embedded member specifications may
  extend beyond one level deep, for example, by expressing the member
  argument as "member.member.member", or "member[index].member".

* Fix for any command that passes strings to gdb for evaluation, where the
  string contains a parentheses-within-parentheses expression along with a
  ">" or ">>" operator inside the outermost set of parentheses. Without the
  patch, a command such as the following fails like so:

  crash> p ((1+1) >> 1)
  p: gdb request failed: p ((1+1)
  crash>

* Fix for the handling of ARM64 kernel module per-cpu symbols. Without the
  patch, if the debuginfo data of an ARM64 kernel module that contains a
  per-cpu section is loaded by "mod -s <module>" or "mod -S", commands such
  as "bt" or "sym" may incorrectly translate the module's virtual addresses
  to symbol names.

* Fix to support the Linux version increment from 3 to 4. (Closes: #699367)
  Without the patch, both dumpfile and live sessions fail during
  initialization, issuing the message "WARNING: kernel version inconsistency
  between vmlinux and dumpfile" or "WARNING: kernel version inconsistency
  between vmlinux and live memory", followed by the nonsensical fatal error
  message "crash: incompatible arguments: vmlinux is not SMP -- vmcore is
  SMP" or "crash: incompatible arguments: vmlinux is not SMP -- live system
  is SMP"

lp://qastaging/debian/jessie/crash 1 Development 2014-09-17 08:30:13 UTC
47. * Fix for the handling of 32-bit ELF ...

Author: Troy Heber
Revision Date: 2014-09-17 08:30:13 UTC

* Fix for the handling of 32-bit ELF xendump dumpfiles if the guest was
  configured with more than 4GB of memory. Without the patch, the crash
  session may fail during initialization with the error message "crash:
  vmlinux and <dumpfile> do not match!".
* Fix for file-handling errors when a compressed vmlinux.debug file is
  followed by a vmlinux file on the crash command line. When the crash
  session ends, two errors will occur: (1) the vmlinux file will be deleted
  (2) the temporary uncompressed version of the vmlinux.debug file will
  remain in /var/tmp This problem also occurs in the highly unlikely case
  where a compressed vmlinux file is followed by a vmlinux.debug file on the
  command line, and the uncompressed temporary version of the vmlinux file
  is larger than the vmlinux.debug file. In that case: (1) the
  vmlinux.debug file will be deleted (2) the temporary uncompressed version
  of the vmlinux file will remain in /var/tmp
* Fix for the "search -t" option if the system has 2064 or more tasks.
  Without the patch, the command fails with a dump of the crash utility
  memory allocation statistics, ending with "search: cannot allocate any
  more memory!".
* Fix for the "mod -S" command to find the debuginfo data for Red Hat
  "kpatch" modules. Without the patch, the command would display "mod:
  cannot find or load object file for <kpatch-module> module".
* Deprecated the "mount -f" option for Linux 3.13 and later kernels
  containing commit eee5cc2702929fd41cce28058dc6d6717f723f87, which removed
  the super_block.s_files list_head member and the open files list that it
  contained. Without the patch, the command option fails with the error
  message "mount: invalid structure member offset: super_block_s_files"
* If a compressed kdump is damaged/truncated such that the bitmap data in
  the dumpfile header is not contained within the file, attempts to analyze
  it with a vmlinux file, or using the "crash --osrelease" or "crash --log"
  options with just the vmcore, will result in the crash utility spinning
  forever, endlessly performing reads of 0 bytes from the file without
  recognizing the EOF condition.
* Fix for an ARM64 compilation failure of the embedded gdb file
  "aarch-linux-nat.c" in the Fedora fc21 rawhide environment, which uses
  glibc-headers-2.19.90-24.fc21.
* Document the reason behind the deprecation of the "mount -f" option for
  Linux 3.13 and later kernels if the option is attempted, and in the "help
  mount" output, similar to the deprecated "mount -d" option.
* During initialization, reject useless ARM64 "(A)" absolute symbols that
  begin with "__crc_". Without the patch, several thousand of them may be
  displayed by "sym -l" prior to the first kernel virtual address symbol.
* When running against an ARM64 dumpfile created with the "snap.so"
  extension module, do not attempt to read the crash_notes. Since the
  dumpfile was taken while running on a live system, the crash_notes, if
  configured into the kernel, would not contain valid data. Without the
  patch, the message "WARNING: could not retrieve crash_notes" is displayed
  during session initialization.
* Determine the various ARM64 kernel virtual address ranges using the
  kernel's VA_BITS value. It currently is hardwired in the kernel to one of
  two values depending upon whether 4K or 64K pages are configured.
  However, there are plans to support 16K paqes, to make VA_BITS a
  configurable value, and to make the number of page-table levels
  configurable. Towards that end, the crash utility has been changed to
  determine the VA_BITS value based upon known kernel virtual addresses, and
  to then calculate the relevant kernel virtual address ranges on that value
  instead of hardwiring them based upon the page size.
* Enhancement to the "kmem -S" option for Linux 3.2 and later kernels
  configured with CONFIG_SLUB to display the address of each per-cpu
  kmem_cache_cpu address and the contents of its per-cpu partial list.
* If an ARM or ARM64 dumpfile does not contain the register sets of the
  active tasks in the kernel's per-cpu crash_notes, there is an
  initialization-time warning message indicating "could not retrieve
  crash_notes". It has been changed to a more meaningful warning message
  indicating "cannot retrieve registers for active tasks".
* Implement support for ARM and ARM64 raw RAM dumpfiles. One or more
  "ramdump" files may be entered on the crash command line in an ordered
  pair format consisting of the RAM dump filename and the starting physical
  address expressed in hexadecimal, connected with an ampersand:

  $ crash vmlinux ramdump@address [ramdump@address]

  A temporary ELF header will be created in /var/tmp, and the combination of
  the header and the ramdump file(s) will be handled like a normal ELF
  vmcore. The ELF header will only exist during the crash session. If
  desired, an optional "-o <filename>" may be entered to create a permanent
  ELF vmcore file from the ramdump file(s).
* Fix for the "help -[nD]" ELF header translation to recognize the EM_ARM
  and EM_AARCH values as "e_machine" types, and ELFOSABI_LINUX as an
  "e_ident[EI_OSABI]" type. Without the patch, the e_machine translation
  would show "40 (unsupported)" for 32-bit ARM, or "183 (unsupported)" on
  ARM64; and the ELFOSABI_LINUX type would be translated as "3 (?)".
* Re-run a command in the history list by entering an "!" followed by the
  number identifying the command. However, unlike the similar "r"
  pseudo-command, if the number is a command name in the user's PATH,
  maintain the current behavior and execute that command.
* Fix to recognize that the live system "crash.ko" memory driver may be
  compressed and named "crash.ko.xz". Without the patch, the driver is not
  recognized and loaded, and as a result the /dev/mem driver and/or
  /proc/kcore will be tried as the live memory source.
* On a live system during session initialization, delay the first read error
  message (typically when reading the "cpu_possible_mask") until it is
  confirmed that all of the following are true: (1) /dev/crash does not
  exist, and (2) /dev/mem is restricted via CONFIG_STRICT_DEVMEM, and (3)
  /proc/kcore cannot be read/accessed. The "kernel may be configured with
  CONFIG_STRICT_DEVMEM" and the "trying /proc/kcore as an alternative"
  messages will still be displayed when appropriate. The read error message
  be displayed only if all three live memory read options fail.
* Fortify the validity verification of the data structures traversed by the
  "kmem [-sS]" options for kernels configured with CONFIG_SLUB. Without the
  patch, the contents of several structure members are not validated, and
  may generate bogus or never-ending output, typically seen when running the
  commands on a "live dump" where the dumpfile was taken while the kernel
  was still running. The patch aborts the relevant parts of per-kmem_cache
  output when invalid data is encountered or if an object list contains
  duplicate entries, and error messages have been enhanced to more
  accurately describe the issues encountered.
* Implement support for the ppc64le PPC64 little-endian architecture. Since
  this required a large number of patches to be applied to
  architecture-neutral files in the gdb-7.6 tree, the changes are only
  applied if the host build system is a ppc64le.
* Fix for SMP active task register-gathering from "kvmdump" dumpfiles that
  were created with a cpu version id of 12 or greater that contain
  additional XSAVE related fields in their cpu device headers. Without the
  patch, active tasks running on cpus above 0 may have truncated backtraces.
* Maintain backwards-compatibility for "kvmdump" dumpfiles that were created
  by older development versions of KVM tools in which the cpu version id was
  12, but the cpu device headers did not contain the additional XSAVE
  related fields.
* Address a "ps" command performance degradation that was introduced by a
  crash-7.0.4 patch which added per-thread task_struct.rss_stat page counts
  to the task's mm_struct.rss_stat page counts in order to show an
  accurate/synchronized RSS value. Without the patch, the "ps" command
  performance would degrade as the number of tasks increased, most notably
  when there were thousands of tasks.

lp://qastaging/debian/wheezy/crash 1 Development 2012-05-10 09:18:26 UTC
33. * New upstream version 6.0.6 * Extend...

Author: Troy Heber
Revision Date: 2012-05-10 09:18:26 UTC

* New upstream version 6.0.6
* Extend the supported cross-architecture build capability so that it
  applies to the SIAL extension module. Without the patch, when building
  the SIAL module in an environment where the overlying crash utility was
  built with "make target=ARM", "make target=PPC", or "make target=X86", the
  SIAL extension module would continue to be built for the host
  architecture.
* Fixes for memory leaks and possible segmentation violations when unloading
  SIAL extension module scripts.
* Fix for the new "foreach RU" task state qualifier. Without the patch, the
  runnable tasks are not selected.
* Fix to disallow multiple task states from being entered using the "foreach
  <task-state>" qualifier. Without the patch, if multiple states were
  entered, the last one on the command line would be honored.
* Fix for the "extend" command to allow the usage of 32-bit PPC extension
  modules. Without the patch, the command fails with the message: "extend:
  <object>.so: not an ELF format object file".
* If an input line starts with "#" or "//", then the line will be saved as a
  comment that is visible when re-cycling through the command history list.
* Fix for a crash-5.1.9 regression that broke the "bt -g" option. Without
  the patch, the option is ignored completely.
* Fix for s390x virtual-to-physical translation of virtual addresses that
  are backed by 1MB pages.
* The s390x has a dumpfile method that creates "live dumps", where the
  kernel continues to run while the dumpfile is being created. The initial
  system banner display and the "sys" command will inform the user that the
  dumpfile is a "[LIVE DUMP]", and the "bt -a" option will fail with the
  message "bt: -a option not supported on a live system or live dump".
* Newly-created dumpfiles generated by the "snap.c" extension module will
  now be recognized as "live dumps". Accordingly, the initial system banner
  display and the "sys" command will inform the user that the dumpfile is a
  "[LIVE DUMP]", and the "bt -a" option will fail with the message "bt: -a
  option not supported on a live system or live dump".
* If "bt" alone is attempted on an active task in a "live dump", it will
  indicate "(active)", i.e., the same as if it were attempted on a live
  system.
* If an extension module does not define the appropriate architecture, i.e.,
  "-DX86", "-DX86_64", etc., then the inclusion of "defs.h" will generate a
  compiler failure indicating "error: 'NR_CPUS' undeclared here (not in a
  function)". In that case, the architecture will now default to that of
  the host machine.
* Prevent a highly-unlikely incorrect calculation of the maximum cpudata
  array length of a kmem_cache during initialization of of CONFIG_SLAB
  kernels.
* Prevent an infinite loop during the initialization of the kmem_cache
  subsystem in CONFIG_SLAB kernels if the cache list or the vmcore is
  corrupt. If the kmem_cache list links back into itself, messages showing
  the first "duplicate" entry in the list and "crash: unable to initialize
  kmem slab cache subsystem" will be displayed.
* Update to the "mod" command to additionally search for module object files
  in the directory containing the kernel namelist (vmlinux) file. This will
  allow an alternate module-debuginfo directory tree to be set up like so: #
  cd <directory> # rpm2cpio kernel-debuginfo-<release>.rpm | cpio -idv
  Having done that, and by referencing the vmlinux file in that directory
  tree directly or by symbolic link, the "mod" command will search for
  module object files starting from the directory containing the vmlinux
  file if they are not found in the standard /lib/modules/<release>
  directory.
* Update to the s390x "bt" command if a task was running in userspace.
  Without the patch, the back trace display ended at the kernel entry
  function frame; with the patch, the user space PSW register is displayed
  with a "(user space)" tag, followed by the general purpose register set.
* In the unlikely event that the access of ARM or x86_64 kernel unwind table
  data fails during crash invocation, print a warning message and allow the
  crash session to continue. Without the patch, the crash session would
  fail immediately.

lp://qastaging/debian/squeeze/crash 1 Development 2010-08-02 09:06:32 UTC
16. * New upstream version 5.0.6 (see h...

Author: Troy Heber
Revision Date: 2010-08-02 09:06:32 UTC

* New upstream version 5.0.6 (see
  http://people.redhat.com/anderson/crash.changelog)
* Fix for support of xendump and Xen kdump dumpfiles from 2.6.27 and and
  later x86_64 kernels.
* Fix for the "s390dbf" command to allow the command's output to be
  redirected to a pipe.
* Fix for the x86 "bt" command to generically recognize the end of trace
  condition for tasks entering the kernel from user-space without having to
  hardwire any more kernel entry point function names. Without the patch, a
  task that took a clock interrupt from user-space and crashed while
  operating on the soft IRQ stack failed with the error message "bt: cannot
  resolve stack trace". (anderson@redhat.com)
* Display the "machine type mismatch" warning when attempting to use a ppc64
  vmlinux file on a non-ppc64 64-bit host. Without the patch, the fact that
  ppc64 vmlinux ELF files are type ET_DYN, and not type ET_EXEC like all of
  the other architectures, was allowing the vmlinux to be accepted without
  the mismatch warning, and would subsequently fail without a meaningful
  explanation being displayed. (anderson@redhat.com)
* Fix for the x86_64 "bt" command if the kdump-generated NMI interrupts a
  multi-threaded task that has just entered kernel space but has not changed
  the RSP stack pointer register from its user-space per-thread stack
  location to the kernel stack. Without the patch, the command follows the
  display of the exception frame on the NMI exception stack with the message
  "WARNING: possibly bogus exception frame", displays the error message "bt:
  cannot transition from exception stack to current process stack", and does
  not display the user-space exception frame. (anderson@redhat.com)
* Added the "set" command to the list of commands acceptable when running
  in --minimal mode. The command is limited to the setting of internal
  variables since there is no task context in that mode.
  (anderson@redhat.com)
* Fix for the "vtop" command when run against x86 Xen PAE kernels. Without
  the patch, the "PAGE:" displays (machine and pseudo-physical) contained
  non-zero values in the lower 12 bits, and the translation of the PTE entry
  was incorrect as a result of receiving the incorrect contents in the lower
  12-bits of the PTE entry. (anderson@redhat.com)
* Implemented support for running against live x86_64 pv_ops/Xen guest
  kernels. (anderson@redhat.com)
* Implemented support for xendump ELF dumpfiles generated from x86_64
  pvops/Xen guest kernels. (anderson@redhat.com)
* Implemented support for running against live x86 pv_ops/Xen guest kernels.
  (anderson@redhat.com)
* Implemented support for xendump ELF dumpfiles generated from x86 pvops/Xen
  guest kernels. (anderson@redhat.com)
* Determine the bit positions of PG_reserved and PG_slab using the newer
  pageflags enumerator values if available. (anderson@redhat.com)
* Fix to prevent the "repeat" command from keeping a crash session alive if
  the controlling terminal session is killed. (anderson@redhat.com)

lp://qastaging/debian/lenny/crash 1 Development 2009-06-16 11:10:44 UTC
5. * New upstream version 4.0-6.3 (see ...

Author: Troy Heber
Revision Date: 2008-05-01 09:20:21 UTC

* New upstream version 4.0-6.3 (see
  http://people.redhat.com/anderson/crash.changelog)
  - Support FC9 kernels with the utrace patch.
  - Improve "search -k" scalability
  - Change how ppc64 examines the cpu map.
  - Fix for ppc64 "bt" command on panic/active task when cpus were offline
  - vtop support of 1MB large pages on z10 (s390)
  - Layout fix to crash man page
  - Support for xen 3.1.2 hypervisor on x86 and amd64

16 of 6 results