This is the release of crash gcore command, version 1.2.2.

ChangeLog:

 - Now gcore collects and writes ELF note segments in O(1) memory
   consumption with regard to the number of threads. The implementation
   so far had created ELF note segments for all the threads as a list
   at the same time, and so memory consumption had grown in proportion
   to the number of threads. In contrast, new implementation writes
   ELF note segments one by one. Without this change, gcore could fail
   abnormally if specified process consists of threads more than tens of
   thousands, with the message: "gcore: cannot allocate any more memory!".
   (d.hatayama@jp.fujitsu.com)

 - Fix the address of vdso virtual address in x86_64 compat mode by using
   fixed VDSO_HIGH_BASE, not by vma->vm_mm->context.vdso. Without this
   fix, access to vdso page fails in x86_64 compat mode and vdso page
   fails to be collected in generated process core dump.
   (d.hatayama@jp.fujitsu.com)

 - Tested on RHEL5.10.
   (d.hatayama@jp.fujitsu.com)


This is the release of crash gcore command, version 1.2.1.

ChangeLog:

 - Fix failure of coredump at accessing memory for VSYSCALL page due
   to wrong conversion of uvtop which wrongly treats address
   VSYSCALL_START as belongs to kernel direct mapping region. This fix
   executes uvtop in verbose mode to make it always paging and
   retrieves the correct physical address from its output. Without
   this fix, VSYSCALL page fails to be collected and core dump process
   is aborted; though VSYSCALL page is done in the last so allmost all
   corefile is already generated.
   (d.hatayama@jp.fujitsu.com)

 - Skip page-faulted pages by lseek() rather than writing zero-filled
   pages. By this, generated core file has holes in the corresponding
   positions for each page-faulted pages if filesystem supports sparse
   files. This is highly useful when the target process has huge
   virtual memory space such as qemu process that has huge physical
   memory of KVM guest machine.
   (d.hatayama@jp.fujitsu.com)

 - Fix the bug that filter for hugepage shared/private memory can
   depend on flags other than HP or HS flags. This was introduced at
   the introduction of VM_DONTDUMP where VM_RESERVED flag was
   removed. At the time, there was a check to see if VM_REESRVED flag
   was set after a check to see if VM_HUGETLB. But the latter check
   was not changed when the former check was removed.
   (d.hatayama@jp.fujitsu.com)


This is the release of crash gcore command, version 1.2.0.

ChangeLog:

 - Add new dump filter level for memory advised with MADV_DONTDUMP.
   By specifying this new dump level, gcore generates core dump
   including the ranges with VM_DONTDUMP flag. The new dump level is
   not specified at default. See help gcore, in particular, part of -f
   option forcusing on DD.

 - Deal with anonymous i_nlink member of inode, caused by the kernel's
   commit a78ef704a8dd430225955f0709b22d4a6ba21deb. Without this
   patch, gcore fails and no core file is generated on the kernels of
   the commit or later.
   (per.fransson.ml@gmail.com)

 - Deal with removal of VM_ALWAYDUMP flag, caused by the kernel's
   commit 909af768e88867016f427264ae39d27a57b6a8ed. Without this
   change, vdso or vsyscall page is not included in core file on the
   kernels of the commit or later.

 - Deal with introduction of VM_DONTDUMP flag, on the kernel's commit
   a0f5202d695d492221dd946aafbfb3d993f6cbe0. Without this patch,
   VM_DONTDUMP flag is wrongly regarded as VM_ALWAYSFLAG flag, and the
   corresponding memory is intensinally included in a generated core
   dump.

 - Deal with removal of VM_RESERVED flag, caused by the kernel's
   commit e4bffd16e615edfa42aa4f37224c3a26c6ef2436. Without this
   patch, gcore checks VM_RESERVED flag even if it is no longer
   present on given kernel.

Supported Kernels:

 * Upstream Kernels

   version  | x86  |x86_64| ARM
 -----------+------+------+-----
   2.6.35.7 |  --  |  --  | OK
   2.6.36   |  OK  |  OK  | --
   3.0.8    |  --  |  --  | OK
   3.6.0    |  --  |  OK  | --   (new)
   3.7-rc5  |  --  |  OK  | --   (new)

 OK : Support
 -- : Not support

 * RHEL Kernels (#1

          | x86  |     x86_64
  version |      | 64 bit ; 32 bit
 ---------+------+--------+---------
    4.8   |  OK  |   OK   |   --
 ---------+------+--------+---------
    5.5   |  OK  |   OK   |   OK
    5.6   |  --  |   OK   |   OK
    5.7   |  --  |   OK   |   OK
    5.8   |  --  |   OK   |   OK
 ---------+------+--------+---------
    6.0   |  OK  |   OK   |   OK
    6.1   |  --  |   OK   |   OK
    6.2   |  --  |   OK   |   OK
    6.3   |  --  |   OK   |   OK      (new)

  #1) RHEL4 is based on 2.6.9 kernel,
      RHEL5 is based on 2.6.18 kernel and
      RHEL6 is based on 2.6.32 kernel.

Todo:

 - Support for nested NMI handling on X86

Note:

 1) The versions signed OK are the ones I did verification. gcore
 might work well on kernel versions near the supported ones.

 2) The reason why I separate table for RHEL series and table for
 upstream series is that RHEL kernels are being made based on upstream
 kernels _plus a variety of additional patches_. So, rigorously, they
 must be thought of as differnet kernels. However, just as 1), it
 would be likely that gcore works well on vmcores for upstream kernels
 near the corresponding RHEL versions.

Thanks.
HATAYAMA Daisuke