crash extension modules

Crash extension modules are required to #include the defs.h file from the top-level directory of crash source tree. There are three suggested manners for building a module:

  1. Hand-compile the module's .so shared object file like this:

      $ gcc -nostartfiles -shared -rdynamic -o <module>.so <module>.c -fPIC -D<machine-type> $(TARGET_CFLAGS)

    where <machine-type> is X86, X86_64, IA64, PPC64, ARM, S390 or S390X, and where $(TARGET_CFLAGS) is -D_FILE_OFFSET_BITS=64 on 32-bit architectures, and -m64 on ppc64.

    As a convenience, the crash utility's crash-<version>.src.rpm package builds a crash-devel sub-package, which installs defs.h into /usr/include/crash/defs.h.

  2. Alternatively, copy the module's .c source file to the crash-<version>/extensions subdirectory. Then, from the top-level crash-<version> directory, enter:

      $ make extensions

    If the default compile line does not suffice, create an accompanying .mk makefile with the same prefix as the .c file, copy it to the crash-<version>/extensions subdirectory, and enter the same make extensions command as above.

  3. Lastly, some extension modules that do have both <module>.c and <module>.mk files may be built without the crash source tree if the defs.h file is located in the current directory or in the /usr/include/crash directory:

      $ make -f <module>.mk

To add the module's command(s) to a running crash session, enter:

  crash> extend <path-to>/<module>.so

The command(s) registered by the extension module will appear in the crash help menu. The module can be installed automatically if the extend command above is entered in either ./.crashrc or $HOME/.crashrc.

If the crash-<version>.src.rpm file is used to build the crash package, a crash-extensions-<version>.rpm subpackage containing a subset of the extension modules below is built. If the subpackage is installed, the extension modules will be located in /usr/lib/crash/extensions or /usr/lib64/crash/extensions, whichever is appropriate.

Lastly, there is a crash -x command line option that will load extension modules automatically from a particular directory. The search for the extension module directory will be done in the following order, and the first one (if any) that exists will be selected as the target directory:

  1. the directory specified in the CRASH_EXTENSIONS shell environment variable
  2. /usr/lib64/crash/extensions (64-bit architectures)
  3. /usr/lib/crash/extensions
  4. ./extensions
All extension modules that are found in the target directory will be loaded automatically.

module commands   comments
echo.c echo
  • Provided primarily as a template for writing new extension modules.

  • To build the module from the top-level crash-<version> directory, enter:
      $ make extensions

  • This module's source file is contained within the crash-<version>.src.rpm and crash-<version>.tar.gz files, and the compiled module is included in the crash-extensions-<version>.rpm subpackage when crash-<version>.src.rpm is used to build the crash package.

  • Author: Dave Anderson  <anderson@redhat.com>
snap.c
snap.mk
snap
  • Takes a snapshot of physical memory and creates an ELF vmcore. The default vmcore is a kdump-style dumpfile, but a netdump-style may be optionally created. It supports the X86, X86_64, IA64 and PPC64 architectures only. All caveats regarding the taking of a "live" memory snapshot apply, such as the constantly-changing state of the kernel's slab subsystem or active process set while the dump is taking place.

  • To build the module from the top-level crash-<version> directory, enter:
      $ make extensions

  • The module also serves as an example of an extension module that can be built in all three manners:

    1. Copy snap.c to the crash-<version>/extensions subdirectory, and from the top-level crash-<version> directory, enter:
        $ make extensions
    2. Copy both snap.c and snap.mk to the crash-<version>/extensions subdirectory, and from the top-level crash-<version> directory, enter:
        $ make extensions
    3. Copy snap.c, snap.mk, and defs.h into any directory. The defs.h file may also be located in the /usr/include/crash directory, as would be the case if the crash-devel sub-package had been installed. Then enter:
        $ make -f snap.mk

  • This module's source file and makefile are contained within the crash-<version>.src.rpm and crash-<version>.tar.gz files, and the compiled module is included in the crash-extensions-<version>.rpm subpackage when crash-<version>.src.rpm is used to build the crash package.

  • Author: Dave Anderson  <anderson@redhat.com>
sial.c
sial.mk
load
unload
edit
  • This module is a prerequisite for the loading of SIAL scripts.

  • To build the module from the top-level crash-<version> directory, enter:
      $ make extensions

  • Upon installing the sial.so object file with extend, any SIAL scripts located in the /usr/share/sial/crash or $HOME/.sial directories will be loaded automatically.

  • This module's source files and makefiles are contained within the crash-<version>.src.rpm and crash-<version>.tar.gz files, and the compiled module is included in the crash-extensions-<version>.rpm subpackage when crash-<version>.src.rpm is used to build the crash package.

  • Author: Luc Chouinard  <lucchouina@yahoo.com>
dminfo.c dminfo
  • Device Mapper information.

  • To build the module from the top-level crash-<version> directory, enter:
      $ make extensions

  • This module's source file is contained within the crash-<version>.src.rpm and crash-<version>.tar.gz files, and the compiled module is included in the crash-extensions-<version>.rpm subpackage when crash-<version>.src.rpm is used to build the crash package.

  • Author: NEC Japan
trace.c trace
  • Displays kernel tracing data and traced events that occurred prior to a panic.

  • To build the module from the top-level crash-<version> directory, enter:
      $ make extensions

  • This module's source file is contained within the crash-<version>.src.rpm and crash-<version>.tar.gz files, and the compiled module is included in the crash-extensions-<version>.rpm subpackage when crash-<version>.src.rpm is used to build the crash package.

  • Author: Lai Jiangshan  <laijs@cn.fujitsu.com>
gcore.c
gcore.mk

crash-gcore-command-1.1.1.tar.gz
gcore
  • Create a core dump file of a user-space task that was running in a kernel dumpfile. The module supports the X86, X86_64 and ARM architectures.

  • If /usr/include/crash/defs.h exists, the module may be built like so:
      $ tar xzf crash-gcore-command-1.1.1.tar.gz
      $ cd crash-gcore-command-1.1.1
      $ make -f gcore.mk

  • Alternatively, defs.h may be copied to the current directory:
      $ tar xzf crash-gcore-command-1.1.1.tar.gz
      $ cd crash-gcore-command-1.1.1
      $ cp <path-to>/defs.h .
      $ make -f gcore.mk

  • To build the module from the top-level crash-<version> directory, enter:
      $ tar xzf crash-gcore-command-1.1.1.tar.gz
      $ mv crash-gcore-command-1.1.1/* extensions
      $ make extensions

  • This module's source files are self-contained in crash-gcore-command-1.1.1.tar.gz.

  • Changelog

  • Author: Daisuke Hatayama  <d.hatayama@jp.fujitsu.com>
spu.c spuctx
spus
spurq
  • Commands for viewing Cell/B.E. SPU's data

  • Requires kernel version >= 2.6.23-rc1

  • To build it, copy spu.c to the crash-<version>/extensions subdirectory, and from the top-level crash-<version> directory, enter:
      $ make extensions

  • Prior to installing it, it is necessary to load the debuginfo symbols of the spufs kernel module:
      crash> mod -s spufs

  • This module is part of IBM Software Development Kit (SDK) for Multicore Acceleration since Version 3.0.

  • Author: Lucio Correia  <luciojhc@br.ibm.com>
pykdump epython
crashinfo
xportshow
  • Execute Python scripts in crash environment

  • Gather basic data

  • View networking information

  • See Project page for more details

  • Author: Alex Sidorenko  <asid@hp.com>
qemu-vtop.c qemu-vtop
  • Translate a KVM guest physical address into the virtual and physical addresses of its KVM host.

  • To build the module from the top-level crash-<version> directory, enter:
      $ cp <path-to>/qemu-vtop.c extensions
      $ make extensions
  • Prior to executing the command, it is necessary to load the debuginfo symbols of the kvm kernel module:
      crash> mod -s kvm

  • Author: Qiao Nuohan  <qiaonuohan@cn.fujitsu.com>
ipcs.c ipcs
  • Provide information about the System V IPCS facilities.

  • To build the module from the top-level crash-<version> directory, enter:
      $ cp <path-to>/ipcs.c extensions
      $ make extensions

  • Author: Qiao Nuohan  <qiaonuohan@cn.fujitsu.com>
 
crash SIAL scripts

SIAL scripts require no compilation, but they do require that the sial.so extension module be pre-loaded with extend, because sial.so provides the load command required to load SIAL scripts. To add the module to a running crash session, enter:

  crash> extend <path-to>/sial.so

The module can be installed automatically if the extend command above is entered in either ./.crashrc or $HOME/.crashrc.

SIAL scripts may be located anywhere. However, upon loading the sial.so module, SIAL scripts located in the /usr/share/sial/crash or $HOME/.sial directories will be loaded automatically. The command(s) contained in a loaded SIAL script will appear in the crash help menu.

The libsial README and README.sial files contain information regarding the format of SIAL scripts.

script commands   comments
ps.c sps
  • Alternative to native "ps" command.

  • Verified only on 2.6.14 kernel; useful as a command template.

  • Author: Luc Chouinard  <lucchouina@yahoo.com>
files.c sfiles
  • Emulation of the native "files" command.

  • Verified only on 2.6.14 kernel; useful as a command template.

  • Author: Luc Chouinard  <lucchouina@yahoo.com>
 
crashdc: Crash Dump Data Collector

The crashdc data collector is a script that can be used in conjunction with the crash utility to automatically generate a text file containing major information about a newly generated crash dump. The package website is here:

        http://crashdc.sourceforge.net

Author: Louis Bouchard <louis.bouchard@canonical.com>

 
crash Python scripts

Pykdump scripts require no Python installed, but they do require the mpykdump.so extension module pre-loaded with extend. mpykdump.so provides built-in Python intepreter and needed pure Python libraries as well as Python bindings to crash. Loading the extension registers 'epython' command which can be used to execute Python programs.

To minimize the extension size, only parts of Python standard library are included in the extension file. If you need anything extra (e.g. XML/RPC) please contact the author.

The mpykdump.so extension file is a shared library with ZIP-archive appended at the end of it. You can use standard ZIP command to view the contents of it and add your own Python programs. In addition to generic epython command, two useful programs are included in the extension (see Wiki documentation on SF site for more details).

The package website is here:

        http://pykdump.sourceforge.net

Author: Alex Sidorenko  <asid@hp.com>

crashinfo
  • Print a brief summary of the dump running some tests

  • Using additional options, do other things (Swiss Army Knife approach - instead of many separate programs, use one with many options)

  • Author: Alex Sidorenko  <asid@hp.com>
xportshow
  • Print networking connections, routing tables etc. - similar to netstat

  • Author: Alex Sidorenko  <asid@hp.com>