--- crash-7.1.1.orig/debian/Makefile.ori +++ crash-7.1.1/debian/Makefile.ori @@ -0,0 +1,634 @@ +# Makefile for core analysis suite +# +# Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc. +# www.missioncriticallinux.com, info@missioncriticallinux.com +# +# Copyright (C) 2002-2013 David Anderson +# Copyright (C) 2002-2013 Red Hat, Inc. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +PROGRAM=crash + +# +# Supported targets: X86 ALPHA PPC IA64 PPC64 +# TARGET and GDB_CONF_FLAGS will be configured automatically by configure +# +TARGET= +GDB_CONF_FLAGS= + +ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) +ifeq (${ARCH}, ppc64) +CONF_FLAGS = -m64 +endif + +# +# GDB, GDB_FILES, GDB_OFILES and GDB_PATCH_FILES will be configured automatically by configure +# +GDB=gdb-7.6 +GDB_FILES=${GDB_7.6_FILES} +GDB_OFILES= +GDB_PATCH_FILES=gdb-7.6.patch gdb-7.6-ppc64le-support.patch + +# +# Default installation directory +# +INSTALLDIR=${DESTDIR}/usr/bin + +# LDFLAGS will be configured automatically by configure +LDFLAGS= + +GENERIC_HFILES=defs.h xen_hyper_defs.h +MCORE_HFILES=va_server.h vas_crash.h +REDHAT_HFILES=netdump.h diskdump.h makedumpfile.h xendump.h kvmdump.h qemu-load.h +LKCD_DUMP_HFILES=lkcd_vmdump_v1.h lkcd_vmdump_v2_v3.h lkcd_dump_v5.h \ + lkcd_dump_v7.h lkcd_dump_v8.h +LKCD_OBSOLETE_HFILES=lkcd_fix_mem.h +LKCD_TRACE_HFILES=lkcd_x86_trace.h +IBM_HFILES=ibm_common.h +SADUMP_HFILES=sadump.h +UNWIND_HFILES=unwind.h unwind_i.h rse.h unwind_x86.h unwind_x86_64.h +VMWARE_HFILES=vmware_vmss.h + +CFILES=main.c tools.c global_data.c memory.c filesys.c help.c task.c \ + kernel.c test.c gdb_interface.c configure.c net.c dev.c \ + alpha.c x86.c ppc.c ia64.c s390.c s390x.c s390dbf.c ppc64.c x86_64.c \ + arm.c arm64.c mips.c \ + extensions.c remote.c va_server.c va_server_v1.c symbols.c cmdline.c \ + lkcd_common.c lkcd_v1.c lkcd_v2_v3.c lkcd_v5.c lkcd_v7.c lkcd_v8.c\ + lkcd_fix_mem.c s390_dump.c lkcd_x86_trace.c \ + netdump.c diskdump.c makedumpfile.c xendump.c unwind.c unwind_decoder.c \ + unwind_x86_32_64.c unwind_arm.c \ + xen_hyper.c xen_hyper_command.c xen_hyper_global_data.c \ + xen_hyper_dump_tables.c kvmdump.c qemu.c qemu-load.c sadump.c ipcs.c \ + ramdump.c vmware_vmss.c + +SOURCE_FILES=${CFILES} ${GENERIC_HFILES} ${MCORE_HFILES} \ + ${REDHAT_CFILES} ${REDHAT_HFILES} ${UNWIND_HFILES} \ + ${LKCD_DUMP_HFILES} ${LKCD_TRACE_HFILES} ${LKCD_OBSOLETE_HFILES}\ + ${IBM_HFILES} ${SADUMP_HFILES} ${VMWARE_HFILES} + +OBJECT_FILES=main.o tools.o global_data.o memory.o filesys.o help.o task.o \ + build_data.o kernel.o test.o gdb_interface.o net.o dev.o \ + alpha.o x86.o ppc.o ia64.o s390.o s390x.o s390dbf.o ppc64.o x86_64.o \ + arm.o arm64.o mips.o \ + extensions.o remote.o va_server.o va_server_v1.o symbols.o cmdline.o \ + lkcd_common.o lkcd_v1.o lkcd_v2_v3.o lkcd_v5.o lkcd_v7.o lkcd_v8.o \ + lkcd_fix_mem.o s390_dump.o netdump.o diskdump.o makedumpfile.o xendump.o \ + lkcd_x86_trace.o unwind_v1.o unwind_v2.o unwind_v3.o \ + unwind_x86_32_64.o unwind_arm.o \ + xen_hyper.o xen_hyper_command.o xen_hyper_global_data.o \ + xen_hyper_dump_tables.o kvmdump.o qemu.o qemu-load.o sadump.o ipcs.o \ + ramdump.o vmware_vmss.o + +MEMORY_DRIVER_FILES=memory_driver/Makefile memory_driver/crash.c memory_driver/README + +# These are the current set of crash extensions sources. They are not built +# by default unless the third command line of the "all:" stanza is uncommented. +# Alternatively, they can be built by entering "make extensions" from this +# directory. + +EXTENSIONS=extensions +EXTENSION_SOURCE_FILES=${EXTENSIONS}/Makefile ${EXTENSIONS}/echo.c ${EXTENSIONS}/dminfo.c \ + ${EXTENSIONS}/snap.c ${EXTENSIONS}/snap.mk ${EXTENSIONS}/trace.c \ + ${EXTENSIONS}/eppic.c ${EXTENSIONS}/eppic.mk + +DAEMON_OBJECT_FILES=remote_daemon.o va_server.o va_server_v1.o \ + lkcd_common.o lkcd_v1.o lkcd_v2_v3.o lkcd_v5.o lkcd_v7.o lkcd_v8.o \ + s390_dump.o netdump_daemon.o + +GDB_5.0_FILES=${GDB}/gdb/Makefile.in \ + ${GDB}/gdb/main.c ${GDB}/gdb/symtab.c ${GDB}/gdb/target.c \ + ${GDB}/gdb/blockframe.c ${GDB}/gdb/alpha-tdep.c \ + ${GDB}/gdb/symfile.c ${GDB}/gdb/elfread.c \ + ${GDB}/gdb/ui-file.c ${GDB}/gdb/utils.c ${GDB}/gdb/gnu-regex.c \ + ${GDB}/gdb/ppc-linux-nat.c +GDB_5.0_OFILES=${GDB}/gdb/main.o ${GDB}/gdb/symtab.o ${GDB}/gdb/target.o \ + ${GDB}/gdb/blockframe.o ${GDB}/gdb/alpha-tdep.o \ + ${GDB}/gdb/symfile.o ${GDB}/gdb/elfread.o \ + ${GDB}/gdb/ui-file.o ${GDB}/gdb/utils.o ${GDB}/gdb/gnu-regex.o \ + ${GDB}/gdb/ppc-linux-nat.o + +GDB_5.1_FILES=${GDB}/gdb/Makefile.in \ + ${GDB}/gdb/main.c ${GDB}/gdb/symtab.c ${GDB}/gdb/target.c \ + ${GDB}/gdb/blockframe.c ${GDB}/gdb/alpha-tdep.c \ + ${GDB}/gdb/symfile.c ${GDB}/gdb/elfread.c \ + ${GDB}/gdb/ui-file.c ${GDB}/gdb/utils.c ${GDB}/gdb/gnu-regex.c +GDB_5.1_OFILES=${GDB}/gdb/main.o ${GDB}/gdb/symtab.o ${GDB}/gdb/target.o \ + ${GDB}/gdb/blockframe.o ${GDB}/gdb/alpha-tdep.o \ + ${GDB}/gdb/symfile.o ${GDB}/gdb/elfread.o \ + ${GDB}/gdb/ui-file.o ${GDB}/gdb/utils.o ${GDB}/gdb/gnu-regex.o + +GDB_5.2.1_FILES=${GDB}/gdb/Makefile.in \ + ${GDB}/gdb/main.c ${GDB}/gdb/symtab.c ${GDB}/gdb/target.c \ + ${GDB}/gdb/blockframe.c ${GDB}/gdb/alpha-tdep.c \ + ${GDB}/gdb/symfile.c ${GDB}/gdb/elfread.c \ + ${GDB}/gdb/ui-file.c ${GDB}/gdb/utils.c +GDB_5.2.1_OFILES=${GDB}/gdb/main.o ${GDB}/gdb/symtab.o ${GDB}/gdb/target.o \ + ${GDB}/gdb/blockframe.o ${GDB}/gdb/alpha-tdep.o \ + ${GDB}/gdb/symfile.o ${GDB}/gdb/elfread.o \ + ${GDB}/gdb/ui-file.o ${GDB}/gdb/utils.o + +GDB_5.3post-0.20021129.36rh_FILES=${GDB}/gdb/Makefile.in \ + ${GDB}/gdb/main.c ${GDB}/gdb/symtab.c ${GDB}/gdb/target.c \ + ${GDB}/gdb/frame.c ${GDB}/gdb/alpha-tdep.c \ + ${GDB}/gdb/symfile.c ${GDB}/gdb/elfread.c \ + ${GDB}/gdb/ui-file.c ${GDB}/gdb/utils.c ${GDB}/gdb/dwarf2read.c +GDB_5.3post-0.20021129.36rh_OFILES=${GDB}/gdb/main.o ${GDB}/gdb/symtab.o \ + ${GDB}/gdb/target.o ${GDB}/gdb/frame.o ${GDB}/gdb/alpha-tdep.o \ + ${GDB}/gdb/symfile.o ${GDB}/gdb/elfread.o ${GDB}/gdb/ui-file.o \ + ${GDB}/gdb/utils.o ${GDB}/gdb/dwarf2read.o + +GDB_6.0_FILES=${GDB}/gdb/Makefile.in ${GDB}/Makefile.in \ + ${GDB}/gdb/main.c ${GDB}/gdb/symtab.c ${GDB}/gdb/target.c \ + ${GDB}/gdb/symfile.c ${GDB}/gdb/elfread.c \ + ${GDB}/gdb/ui-file.c ${GDB}/gdb/utils.c \ + ${GDB}/gdb/ppc-linux-tdep.c ${GDB}/sim/ppc/ppc-instructions \ + ${GDB}/bfd/simple.c ${GDB}/include/obstack.h +GDB_6.0_OFILES=${GDB}/gdb/main.o ${GDB}/gdb/symtab.o \ + ${GDB}/gdb/target.o ${GDB}/gdb/symfile.o ${GDB}/gdb/elfread.o \ + ${GDB}/gdb/ui-file.o ${GDB}/gdb/utils.o \ + ${GDB}/gdb/ppc-linux-tdep.o ${GDB}/bfd/simple.o + +GDB_6.1_FILES=${GDB}/gdb/Makefile.in ${GDB}/Makefile.in \ + ${GDB}/gdb/main.c ${GDB}/gdb/symtab.c ${GDB}/gdb/target.c \ + ${GDB}/gdb/symfile.c ${GDB}/gdb/elfread.c \ + ${GDB}/gdb/ui-file.c ${GDB}/gdb/utils.c ${GDB}/gdb/dwarf2read.c \ + ${GDB}/include/obstack.h ${GDB}/gdb/ppc-linux-tdep.c +GDB_6.1_OFILES=${GDB}/gdb/main.o ${GDB}/gdb/symtab.o \ + ${GDB}/gdb/target.o ${GDB}/gdb/symfile.o ${GDB}/gdb/elfread.o \ + ${GDB}/gdb/ui-file.o ${GDB}/gdb/utils.o ${GDB}/gdb/dwarf2read.o \ + ${GDB}/gdb/ppc-linux-tdep.o + +GDB_7.0_FILES= +GDB_7.0_OFILES=${GDB}/gdb/symtab.o + +GDB_7.3.1_FILES= +GDB_7.3.1_OFILES=${GDB}/gdb/symtab.o + +GDB_7.6_FILES= +GDB_7.6_OFILES=${GDB}/gdb/symtab.o + +# +# GDB_FLAGS is passed up from the gdb Makefile. +# +GDB_FLAGS= + +# +# WARNING_OPTIONS and WARNING_ERROR are both applied on a per-file basis. +# WARNING_ERROR is NOT used on files including "dirty" gdb headers so that +# successful compilations can be achieved with acceptable warnings; its +# usefulness is also dependent upon the processor's compiler -- your mileage +# may vary. +# +#WARNING_OPTIONS=-Wall -O2 -Wstrict-prototypes -Wmissing-prototypes -fstack-protector -Wformat-security +#WARNING_ERROR=-Werror + +# TARGET_CFLAGS will be configured automatically by configure +TARGET_CFLAGS= + +CRASH_CFLAGS=-g -D${TARGET} ${TARGET_CFLAGS} ${GDB_FLAGS} ${CFLAGS} + +GPL_FILES=COPYING3 +TAR_FILES=${SOURCE_FILES} Makefile ${GPL_FILES} README .rh_rpm_package crash.8 \ + ${EXTENSION_SOURCE_FILES} ${MEMORY_DRIVER_FILES} +CSCOPE_FILES=${SOURCE_FILES} + +READLINE_DIRECTORY=./${GDB}/readline +BFD_DIRECTORY=./${GDB}/bfd +GDB_INCLUDE_DIRECTORY=./${GDB}/include + +REDHATFLAGS=-DREDHAT + +# target could be set on command line when invoking make. Like: make target=ARM +# otherwise target will be the same as the host +ifneq ($(target),) +CONF_TARGET_FLAG="-t$(target)" +endif + +# To build the extensions library by default, uncomment the third command +# line below. Otherwise they can be built by entering "make extensions". + +all: make_configure + @./configure ${CONF_TARGET_FLAG} -p "RPMPKG=${RPMPKG}" -b + @make --no-print-directory gdb_merge +# @make --no-print-directory extensions + +gdb_merge: force + @if [ ! -f ${GDB}/README ]; then \ + make --no-print-directory gdb_unzip; fi + @echo "${LDFLAGS} -lz -ldl -rdynamic" > ${GDB}/gdb/mergelibs + @echo "../../${PROGRAM} ../../${PROGRAM}lib.a" > ${GDB}/gdb/mergeobj + @rm -f ${PROGRAM} + @if [ ! -f ${GDB}/config.status ]; then \ + (cd ${GDB}; ./configure ${GDB_CONF_FLAGS} --with-separate-debug-dir=/usr/lib/debug \ + --with-bugurl="" --with-expat=no --with-python=no; \ + make --no-print-directory CRASH_TARGET=${TARGET}; echo ${TARGET} > crash.target) \ + else make --no-print-directory rebuild; fi + @if [ ! -f ${PROGRAM} ]; then \ + echo; echo "${PROGRAM} build failed"; \ + echo; exit 1; fi + +rebuild: + @if [ ! -f ${GDB}/${GDB}.patch ]; then \ + touch ${GDB}/${GDB}.patch; fi + @if [ -f ${GDB}.patch ] && [ -s ${GDB}.patch ] && \ + [ "`sum ${GDB}.patch`" != "`sum ${GDB}/${GDB}.patch`" ]; then \ + (patch -N -p0 -r- < ${GDB}.patch; cp ${GDB}.patch ${GDB}; cd ${GDB}; \ + make --no-print-directory CRASH_TARGET=${TARGET}) \ + else (cd ${GDB}/gdb; make --no-print-directory CRASH_TARGET=${TARGET}); fi + +gdb_unzip: + @rm -f gdb.files + @for FILE in ${GDB_FILES} dummy; do\ + echo $$FILE >> gdb.files; done + @if [ ! -f ${GDB}.tar.gz ] && [ ! -f /usr/bin/wget ]; then \ + echo /usr/bin/wget is required to download ${GDB}.tar.gz; echo; exit 1; fi + @if [ ! -f ${GDB}.tar.gz ] && [ -f /usr/bin/wget ]; then \ + wget http://ftp.gnu.org/gnu/gdb/${GDB}.tar.gz; fi + @tar --exclude-from gdb.files -xvzmf ${GDB}.tar.gz + @make --no-print-directory gdb_patch + +gdb_patch: + if [ -f ${GDB}.patch ] && [ -s ${GDB}.patch ]; then \ + patch -p0 < ${GDB}.patch; cp ${GDB}.patch ${GDB}; fi + if [ "${ARCH}" = "ppc64le" ] && [ -f ${GDB}-ppc64le-support.patch ]; then \ + patch -d ${GDB} -p1 -F0 < ${GDB}-ppc64le-support.patch ; \ + fi + if [ "${ARCH}" = "x86_64" ] && [ "${TARGET}" = "PPC64" ] && [ -f ${GDB}-ppc64le-support.patch ]; then \ + patch -d ${GDB} -p1 -F0 < ${GDB}-ppc64le-support.patch ; \ + fi + +library: make_build_data ${OBJECT_FILES} + ar -rs ${PROGRAM}lib.a ${OBJECT_FILES} + +gdb: force + rm -f ${GDB_OFILES} + @make --no-print-directory all + +force: + + +make_configure: force + @rm -f configure + @${CC} ${CONF_FLAGS} -o configure configure.c ${WARNING_ERROR} ${WARNING_OPTIONS} + +clean: make_configure + @./configure ${CONF_TARGET_FLAG} -q -b + @make --no-print-directory do_clean + +do_clean: + rm -f ${OBJECT_FILES} ${DAEMON_OBJECT_FILES} ${PROGRAM} ${PROGRAM}lib.a ${GDB_OFILES} + @(cd extensions; make --no-print-directory -i clean) + @(cd memory_driver; make --no-print-directory -i clean) + +make_build_data: force + ${CC} -c ${CRASH_CFLAGS} build_data.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +install: + /usr/bin/install ${PROGRAM} ${INSTALLDIR} +# /usr/bin/install ${PROGRAM}d ${INSTALLDIR} + +unconfig: make_configure + @./configure -u + +warn: make_configure + @./configure ${CONF_TARGET_FLAG} -w -b + @make --no-print-directory gdb_merge + +Warn: make_configure + @./configure ${CONF_TARGET_FLAG} -W -b + @make --no-print-directory gdb_merge + +nowarn: make_configure + @./configure ${CONF_TARGET_FLAG} -n -b + @make --no-print-directory gdb_merge + +lzo: make_configure + @./configure -x lzo ${CONF_TARGET_FLAG} -w -b + @make --no-print-directory gdb_merge + +snappy: make_configure + @./configure -x snappy ${CONF_TARGET_FLAG} -w -b + @make --no-print-directory gdb_merge + +main.o: ${GENERIC_HFILES} main.c + ${CC} -c ${CRASH_CFLAGS} main.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +cmdline.o: ${GENERIC_HFILES} cmdline.c + ${CC} -c ${CRASH_CFLAGS} cmdline.c -I${READLINE_DIRECTORY} ${WARNING_OPTIONS} ${WARNING_ERROR} + +tools.o: ${GENERIC_HFILES} tools.c + ${CC} -c ${CRASH_CFLAGS} tools.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +global_data.o: ${GENERIC_HFILES} global_data.c + ${CC} -c ${CRASH_CFLAGS} global_data.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +symbols.o: ${GENERIC_HFILES} symbols.c + ${CC} -c ${CRASH_CFLAGS} symbols.c -I${BFD_DIRECTORY} -I${GDB_INCLUDE_DIRECTORY} ${WARNING_OPTIONS} ${WARNING_ERROR} + +filesys.o: ${GENERIC_HFILES} filesys.c + ${CC} -c ${CRASH_CFLAGS} filesys.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +help.o: ${GENERIC_HFILES} help.c + ${CC} -c ${CRASH_CFLAGS} help.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +memory.o: ${GENERIC_HFILES} memory.c + ${CC} -c ${CRASH_CFLAGS} memory.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +test.o: ${GENERIC_HFILES} test.c + ${CC} -c ${CRASH_CFLAGS} test.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +task.o: ${GENERIC_HFILES} task.c + ${CC} -c ${CRASH_CFLAGS} task.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +kernel.o: ${GENERIC_HFILES} kernel.c + ${CC} -c ${CRASH_CFLAGS} kernel.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +gdb_interface.o: ${GENERIC_HFILES} gdb_interface.c + ${CC} -c ${CRASH_CFLAGS} gdb_interface.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +va_server.o: ${MCORE_HFILES} va_server.c + ${CC} -c ${CRASH_CFLAGS} va_server.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +va_server_v1.o: ${MCORE_HFILES} va_server_v1.c + ${CC} -c ${CRASH_CFLAGS} va_server_v1.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +lkcd_common.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_common.c + ${CC} -c ${CRASH_CFLAGS} lkcd_common.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +lkcd_v1.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v1.c + ${CC} -c ${CRASH_CFLAGS} lkcd_v1.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR} + +lkcd_v2_v3.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v2_v3.c + ${CC} -c ${CRASH_CFLAGS} lkcd_v2_v3.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR} + +lkcd_v5.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v5.c + ${CC} -c ${CRASH_CFLAGS} lkcd_v5.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR} + +lkcd_v7.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v7.c + ${CC} -c ${CRASH_CFLAGS} lkcd_v7.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR} + +lkcd_v8.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v8.c + ${CC} -c ${CRASH_CFLAGS} lkcd_v8.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR} + +net.o: ${GENERIC_HFILES} net.c + ${CC} -c ${CRASH_CFLAGS} net.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +dev.o: ${GENERIC_HFILES} dev.c + ${CC} -c ${CRASH_CFLAGS} dev.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +# remote.c functionality has been deprecated +remote.o: ${GENERIC_HFILES} remote.c + @${CC} -c ${CRASH_CFLAGS} remote.c ${WARNING_OPTIONS} ${WARNING_ERROR} +remote_daemon.o: ${GENERIC_HFILES} remote.c + ${CC} -c ${CRASH_CFLAGS} -DDAEMON remote.c -o remote_daemon.o ${WARNING_OPTIONS} ${WARNING_ERROR} + +x86.o: ${GENERIC_HFILES} ${REDHAT_HFILES} x86.c + ${CC} -c ${CRASH_CFLAGS} x86.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR} + +alpha.o: ${GENERIC_HFILES} alpha.c + ${CC} -c ${CRASH_CFLAGS} alpha.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +ppc.o: ${GENERIC_HFILES} ppc.c + ${CC} -c ${CRASH_CFLAGS} ppc.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +ia64.o: ${GENERIC_HFILES} ${REDHAT_HFILES} ia64.c + ${CC} -c ${CRASH_CFLAGS} ia64.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +ppc64.o: ${GENERIC_HFILES} ppc64.c + ${CC} -c ${CRASH_CFLAGS} ppc64.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +x86_64.o: ${GENERIC_HFILES} ${REDHAT_HFILES} x86_64.c + ${CC} -c ${CRASH_CFLAGS} x86_64.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +arm.o: ${GENERIC_HFILES} ${REDHAT_HFILES} arm.c + ${CC} -c ${CRASH_CFLAGS} arm.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +arm64.o: ${GENERIC_HFILES} ${REDHAT_HFILES} arm64.c + ${CC} -c ${CRASH_CFLAGS} arm64.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +mips.o: ${GENERIC_HFILES} ${REDHAT_HFILES} mips.c + ${CC} -c ${CRASH_CFLAGS} mips.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +s390.o: ${GENERIC_HFILES} ${IBM_HFILES} s390.c + ${CC} -c ${CRASH_CFLAGS} s390.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +s390x.o: ${GENERIC_HFILES} ${IBM_HFILES} s390x.c + ${CC} -c ${CRASH_CFLAGS} s390x.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +s390dbf.o: ${GENERIC_HFILES} ${IBM_HFILES} s390dbf.c + ${CC} -c ${CRASH_CFLAGS} s390dbf.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +s390_dump.o: ${GENERIC_HFILES} ${IBM_HFILES} s390_dump.c + ${CC} -c ${CRASH_CFLAGS} s390_dump.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +netdump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} ${SADUMP_HFILES} netdump.c + ${CC} -c ${CRASH_CFLAGS} netdump.c ${WARNING_OPTIONS} ${WARNING_ERROR} +netdump_daemon.o: ${GENERIC_HFILES} ${REDHAT_HFILES} netdump.c + ${CC} -c ${CRASH_CFLAGS} -DDAEMON netdump.c -o netdump_daemon.o ${WARNING_OPTIONS} ${WARNING_ERROR} + +diskdump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} diskdump.c + ${CC} -c ${CRASH_CFLAGS} diskdump.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +makedumpfile.o: ${GENERIC_HFILES} ${REDHAT_HFILES} makedumpfile.c + ${CC} -c ${CRASH_CFLAGS} makedumpfile.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +xendump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} xendump.c + ${CC} -c ${CRASH_CFLAGS} xendump.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +kvmdump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} kvmdump.c + ${CC} -c ${CRASH_CFLAGS} kvmdump.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +qemu.o: ${GENERIC_HFILES} ${REDHAT_HFILES} qemu.c + ${CC} -c ${CRASH_CFLAGS} qemu.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +qemu-load.o: ${GENERIC_HFILES} ${REDHAT_HFILES} qemu-load.c + ${CC} -c ${CRASH_CFLAGS} qemu-load.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +sadump.o: ${GENERIC_HFILES} ${SADUMP_HFILES} sadump.c + ${CC} -c ${CRASH_CFLAGS} sadump.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +ipcs.o: ${GENERIC_HFILES} ipcs.c + ${CC} -c ${CRASH_CFLAGS} ipcs.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +extensions.o: ${GENERIC_HFILES} extensions.c + ${CC} -c ${CRASH_CFLAGS} extensions.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +lkcd_x86_trace.o: ${GENERIC_HFILES} ${LKCD_TRACE_HFILES} lkcd_x86_trace.c + ${CC} -c ${CRASH_CFLAGS} lkcd_x86_trace.c -DREDHAT ${WARNING_OPTIONS} ${WARNING_ERROR} + +unwind_x86_32_64.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind_x86_32_64.c + ${CC} -c ${CRASH_CFLAGS} unwind_x86_32_64.c -o unwind_x86_32_64.o ${WARNING_OPTIONS} ${WARNING_ERROR} + +unwind_arm.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind_arm.c + ${CC} -c ${CRASH_CFLAGS} unwind_arm.c -o unwind_arm.o ${WARNING_OPTIONS} ${WARNING_ERROR} + +unwind_v1.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind.c unwind_decoder.c + ${CC} -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V1 -o unwind_v1.o ${WARNING_OPTIONS} ${WARNING_ERROR} + +unwind_v2.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind.c unwind_decoder.c + ${CC} -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V2 -o unwind_v2.o ${WARNING_OPTIONS} ${WARNING_ERROR} + +unwind_v3.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind.c unwind_decoder.c + ${CC} -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V3 -o unwind_v3.o ${WARNING_OPTIONS} ${WARNING_ERROR} + +lkcd_fix_mem.o: ${GENERIC_HFILES} ${LKCD_HFILES} lkcd_fix_mem.c + ${CC} -c ${CRASH_CFLAGS} lkcd_fix_mem.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR} + +xen_hyper.o: ${GENERIC_HFILES} xen_hyper.c + ${CC} -c ${CRASH_CFLAGS} xen_hyper.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +xen_hyper_command.o: ${GENERIC_HFILES} xen_hyper_command.c + ${CC} -c ${CRASH_CFLAGS} xen_hyper_command.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +xen_hyper_global_data.o: ${GENERIC_HFILES} xen_hyper_global_data.c + ${CC} -c ${CRASH_CFLAGS} xen_hyper_global_data.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +xen_hyper_dump_tables.o: ${GENERIC_HFILES} xen_hyper_dump_tables.c + ${CC} -c ${CRASH_CFLAGS} xen_hyper_dump_tables.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +ramdump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} ramdump.c + ${CC} -c ${CRASH_CFLAGS} ramdump.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +vmware_vmss.o: ${GENERIC_HFILES} ${VMWARE_HFILES} vmware_vmss.c + ${CC} -c ${CRASH_CFLAGS} vmware_vmss.c ${WARNING_OPTIONS} ${WARNING_ERROR} + +${PROGRAM}: force + @make --no-print-directory all + +# Remote daemon functionality has been deprecated. +daemon_deprecated: force + @echo "WARNING: remote daemon functionality has been deprecated" + @echo + +${PROGRAM}d: daemon_deprecated make_configure + @./configure -d + @make --no-print-directory make_build_data + @make --no-print-directory daemon + +daemon: ${DAEMON_OBJECT_FILES} + ${CC} ${LDFLAGS} -o ${PROGRAM}d ${DAEMON_OBJECT_FILES} build_data.o -lz + +files: make_configure + @./configure -q -b + @make --no-print-directory show_files + +gdb_files: make_configure + @./configure -q -b + @echo ${GDB_FILES} ${GDB_PATCH_FILES} + +show_files: + @if [ -f ${PROGRAM} ]; then \ + ./${PROGRAM} --no_scroll --no_crashrc -h README > README; fi + @echo ${SOURCE_FILES} Makefile ${GDB_FILES} ${GDB_PATCH_FILES} ${GPL_FILES} README \ + .rh_rpm_package crash.8 ${EXTENSION_SOURCE_FILES} ${MEMORY_DRIVER_FILES} + +ctags: + ctags ${SOURCE_FILES} + +tar: make_configure + @./configure -q -b + @make --no-print-directory do_tar + +do_tar: + @if [ -f ${PROGRAM} ]; then \ + ./${PROGRAM} --no_scroll --no_crashrc -h README > README; fi + tar cvzf ${PROGRAM}.tar.gz ${TAR_FILES} ${GDB_FILES} ${GDB_PATCH_FILES} + @echo; ls -l ${PROGRAM}.tar.gz + +VERSION=7.1.1 +RELEASE=0 + +release: make_configure + @if [ "`id --user`" != "0" ]; then \ + echo "make release: must be super-user"; exit 1; fi + @./configure -P "RPMPKG=${RPMPKG}" -u -g + @make --no-print-directory release_configure + @echo + @echo "cvs tag this release if necessary" + +release_configure: make_configure + @if [ "${GDB}" = "" ] ; then \ + echo "make release: GDB not defined: append GDB=gdb-x.x to make command line"; echo; exit 1; fi + @./configure -r ${GDB} + @make --no-print-directory do_release + +do_release: + @echo "CRASH VERSION: ${VERSION} GDB VERSION: ${GDB}" + @if [ ! -f .rh_rpm_package ]; then \ + echo "no .rh_rpm_package exists!"; exit 1; fi + @chmod 666 .rh_rpm_package + @rm -rf ./RELDIR; mkdir ./RELDIR; mkdir ./RELDIR/${PROGRAM}-${VERSION} + @rm -f ${PROGRAM}-${VERSION}.tar.gz + @rm -f ${PROGRAM}-${VERSION}-${RELEASE}.src.rpm + @chown root ./RELDIR/${PROGRAM}-${VERSION} + @tar cf - ${SOURCE_FILES} Makefile ${GDB_FILES} ${GDB_PATCH_FILES} ${GPL_FILES} \ + .rh_rpm_package crash.8 ${EXTENSION_SOURCE_FILES} ${MEMORY_DRIVER_FILES} | \ + (cd ./RELDIR/${PROGRAM}-${VERSION}; tar xf -) + @cp ${GDB}.tar.gz ./RELDIR/${PROGRAM}-${VERSION} + @./${PROGRAM} --no_scroll --no_crashrc -h README > README + @cp README ./RELDIR/${PROGRAM}-${VERSION}/README + @(cd ./RELDIR; find . -exec chown root {} ";") + @(cd ./RELDIR; find . -exec chgrp root {} ";") + @(cd ./RELDIR; find . -exec touch {} ";") + @(cd ./RELDIR; \ + tar czvf ../${PROGRAM}-${VERSION}.tar.gz ${PROGRAM}-${VERSION}) + @chgrp root ${PROGRAM}-${VERSION}.tar.gz + @rm -rf ./RELDIR + @echo + @ls -l ${PROGRAM}-${VERSION}.tar.gz + @./configure -s -u > ${PROGRAM}.spec + @if [ -s ${PROGRAM}.spec ]; then \ + rm -rf ./RPMBUILD; \ + mkdir -p ./RPMBUILD/SOURCES ./RPMBUILD/SPECS ./RPMBUILD/SRPMS; \ + cp ${PROGRAM}-${VERSION}.tar.gz ./RPMBUILD/SOURCES; \ + cp ${PROGRAM}.spec ./RPMBUILD/SPECS; \ + rpmbuild --define "_sourcedir ./RPMBUILD/SOURCES" \ + --define "_srcrpmdir ./RPMBUILD/SRPMS" \ + --define "_specdir ./RPMBUILD/SPECS" \ + --nodeps -bs ./RPMBUILD/SPECS/${PROGRAM}.spec > /dev/null; \ + mv ./RPMBUILD/SRPMS/${PROGRAM}-${VERSION}-${RELEASE}.src.rpm . ; \ + rm -rf ./RPMBUILD; \ + ls -l ${PROGRAM}-${VERSION}-${RELEASE}.src.rpm; \ + fi + +ref: + make ctags cscope + +cscope: + rm -f cscope.files cscope_out + for FILE in ${SOURCE_FILES}; do \ + echo $$FILE >> cscope.files; done + cscope + +glink: make_configure + @./configure -q -b + rm -f gdb + ln -s ${GDB}/gdb gdb + (cd ${GDB}/gdb; rm -f ${PROGRAM}; ln -s ../../${PROGRAM} ${PROGRAM}) + +name: + @echo ${PROGRAM} + +dis: + objdump --disassemble --line-numbers ${PROGRAM} > ${PROGRAM}.dis + +extensions: make_configure + @./configure ${CONF_TARGET_FLAG} -q -b + @make --no-print-directory do_extensions + +do_extensions: + @(cd extensions; make -i TARGET=$(TARGET) TARGET_CFLAGS="$(TARGET_CFLAGS)" GDB=$(GDB) GDB_FLAGS=$(GDB_FLAGS)) + +memory_driver: make_configure + @(cd memory_driver; make --no-print-directory -i) --- crash-7.1.1.orig/debian/README.source +++ crash-7.1.1/debian/README.source @@ -0,0 +1,6 @@ +This package uses quilt to manage patches to the upstream source code. Patches +are stored in the source package as diffs in debian/patches and applied during +the build. For detailed information please refer to the Debian quilt +documentation: + +/usr/share/doc/quilt/README.source --- crash-7.1.1.orig/debian/changelog +++ crash-7.1.1/debian/changelog @@ -0,0 +1,5152 @@ +crash (7.1.1-1ubuntu1) wily; urgency=low + + * Merge from Debian unstable. Remaining changes: + - Build for armhf, arm64, ppc64el. + - Minor fixes for live autopkgtest. + - debian/tests/live: Redirect gpg stderr to stdout, as that's the only + known and expected stderr source. + - Simplify ddeb archive requirements. + * Dropped patches: + - Fix-for-the-PPC64-bt-command-on-both-big-endian-and-.patch + - Linux-4.0.patch + + -- Chris J Arges Tue, 02 Jun 2015 09:12:52 -0500 + +crash (7.1.1-1) unstable; urgency=medium + + * Autopkgtest fix from Martin Pitt (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-.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: : 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" 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 " + 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 " 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" + + -- Troy Heber Wed, 27 May 2015 11:20:02 -0600 + +crash (7.1.0-1) UNRELEASED; urgency=medium + * Support for "irq" and "irq -u" on the S390 and S390X architectures if they + are running Linux 3.12 and later kernels. Older kernels without + GENERIC_HARDIRQ support will fail with the error message "irq: cannot + determine number of IRQs". + + * Fix for the handling of multiple ramdump images. Without the patch, + entering more than one ramdump image on the command line may result in a + segmentation violation. + + * Implemented the capability of building crash as an x86_64 binary for + analyzing little-endian PPC64 dumpfiles on an x86_64 host, which can be + done by entering "make target=PPC64". After the initial build is + complete, subsequent builds can be done by entering "make" alone. + + * Fix for the "crash --log " option on both of the PPC64 + architectures. Without the patch, the command fails with the message + "crash: seek error: physical address:
type: log_buf pointer", + followed by "crash: cannot read log_buf value". This bug was introduced + in crash-7.0.0 by a patch that added support for the PPC64 BOOK3E + processor family. + + * Fix for a misleading fatal error message if a 32-bit crash binary built on + an X86_64 host with "make target=X86" or "make target=ARM" is used on a + live X86_64 system without specifying a vmlinux namelist. Without the + patch, the session fails with the message "crash: cannot find booted + kernel -- please enter namelist argument". The error message will be + "crash: compiled for the X86 architecture" or "crash: compiled for the ARM + architecture". + + * Fix for finding the starting stack and instruction pointer hooks for the + active tasks in x86_64 ELF or compressed dumpfiles created by the KVM + "virsh dump --memory-only" facility. Without the patch, the backtraces of + active tasks may show an invalid starting frame that indicates + "__schedule". The fix displays the exception RIP and dumps the register + contents that are stored in the dumpfile header. If the active task was + operating in the kernel, the backtrace continues from there; if the task + was operating in user-space, the backtrace is complete at that point. + + * Fix for the "waitq" command when it is passed the address of a + wait_queue_head_t structure. Without the patch, if the entries on the + list are dynamically-created __wait_queue structures on kernel stacks, the + tasks owning the kernel stack are not displayed. + + * Implemented a new "net -n [pid|task]" option that displays the list of + network devices with respect the network namespace of the current context, + or that of a task specified by the optional "pid" or "task" argument. The + former "net -n
" option that translates an IPv4 address expressed + as a decimal or hexadecimal value into a standard numbers-and-dots + notation has been changed to "net -N". + + * Fix for the kernel virtual address to symbol name translation for special + text region delimiter symbols declared in vmlinux.lds.S with + VMLINUX_SYMBOL(), such as __sched_text_start, __lock_text_start, + __kprobes_text_start, __entry_text_start and __irqentry_text_start. + Without the patch, if the addresses of those symbols are the same value as + the first "real" symbol in those text regions, commands such as "dis" and + "sym" may show the "_text_start" symbol name instead of the desired text + symbol name. + + * Enhancement of the "kmem -i" option to display memory overcommit + information, which will be appended to the traditional output of the + command. For example: + + crash> kmem -i + PAGES TOTAL PERCENTAGE + TOTAL MEM 1965332 7.5 GB ---- + FREE 78080 305 MB 3% of TOTAL MEM + USED 1887252 7.2 GB 96% of TOTAL MEM + SHARED 789954 3 GB 40% of TOTAL MEM + BUFFERS 110606 432.1 MB 5% of TOTAL MEM + CACHED 1212645 4.6 GB 61% of TOTAL MEM + SLAB 146563 572.5 MB 7% of TOTAL MEM + + TOTAL SWAP 1970175 7.5 GB ---- + SWAP USED 5 20 KB 0% of TOTAL SWAP + SWAP FREE 1970170 7.5 GB 99% of TOTAL SWAP + + COMMIT LIMIT 2952841 11.3 GB ---- + COMMITTED 1150595 4.4 GB 38% of TOTAL LIMIT + + The COMMIT LIMIT and COMMITTED information is similar to that + displayed by the CommitLimit and Committed_AS lines in /proc/meminfo. + + * Fix for the "kmem [-s|-S]
" command, and the "rd -S[S]" and "bt + -F[F]" options. Without the patch, if the page structure associated with + a memory address still contains a (stale) pointer to the address of a + kmem_cache structure, but whose page.flags does not have the PG_slab bit + set, the address is incorrectly presumed to be contained within that slab + cache. As as result, the "kmem" command may display one or more messages + indicating a "bad inuse counter", a "bad next pointer" or a "bad s_mem + pointer", followed by an "address not found in cache" error message. The + "rd -S[S]" and "bt -F[F]" commands may mislabel memory locations as + belonging to slab caches. + + * Added a new "vm -M " option. When a task is exiting, the + mm_struct address pointer in its task_struct is NULL'd out, and as a + result, the "vm" command looks like this: + + crash> vm + PID: 4563 TASK: ffff88049863f500 CPU: 8 COMMAND: "postgres" + MM PGD RSS TOTAL_VM + 0 0 0k 0k + + However, the mm_struct address can be retrieved from the task's kernel + stack and entered manually with this option, which allows the "vm" command + to attempt to dump the virtual memory data of the task. It may, or may + not, work, depending upon how far the virtual memory deconstruction has + proceeded. This option only verifies that the address entered is from the + "mm_struct" slab cache, and that its mm_struct.mm_count is non-zero. + + * Fix for the X86_64 "bt" and "mach" commands when running against kernels + that have the following Linux 3.18 commit, which addresses CVE-2014-9322. + The kernel patch removes the per-cpu exception stack used for handling + stack segment faults: + + commit 6f442be2fb22be02cafa606f1769fa1e6f894441 + x86_64, traps: Stop using IST for #SS + + Without this patch, backtraces that originate on any of the other 4 + per-cpu exception stacks will be mis-labeled at the transition point back + to the previous stack. For example, backtraces that that originate on the + NMI stack will indicate that they are coming from the "DOUBLEFAULT" stack. + The patch examines all idt_table entries during initialization, looking + for gate descriptors that have non-zero index values, and when found, + pulls out out the handler function address; from that information, the + exception stack name string array is properly initialized rather than + being hard-coded. This fix also properly labels the exception stack names + on x86_64 CONFIG_PREEMPT_RT realtime kernels, which only utilize 3 + exception stacks instead of the traditional 5 (now 4 with this kernel + commit), instead of just showing "RT". Also, without the patch, the + "mach" command will mis-label the stack names when it displays the base + addresses of each per-cpu exception stack. + + * Additional output for the "help [-D|-n]" options on X86 and X86_64 + architectures. For compressed kdumps, the elf_prstatus structure in each + per-cpu NT_PRSTATUS note will be translated. For ELF kdumps, the + elf_prstatus structure in each per-cpu NT_PRSTATUS note, and the + QEMUCPUState structure in each per-cpu QEMU note, will be translated. + + * Implemented a new "bt -A" option for the S390X architecture, which adds + support for displaying the new s390x vector registers. For ELF dumps, the + registers are taken from the VX ELF notes; for s390 dumps. the registers + are taken from memory. The option produces the same output as the -a + option, but also displays the vector registers for all active tasks. + + * Fix for the 32-bit ARM virtual-to-physical address translation of + unity-mapped kernel virtual addresses in kernels configured with + CONFIG_ARM_LPAE if the system's phys_base exceeds 4GB. + + * Fix for the "help [-D|-n]" option on 32-bit X86 kernels that use the + 64-bit ELF vmcore format generated by "virsh dump --memory-only". Without + the patch, the QEMUCPUState structures in QEMU notes are not translated. + + * Additional output for the "help [-D|-n]" options on X86 and X86_64 + architectures. For compressed kdumps generated by "virsh dump + --memory-only", the QEMUCPUState structure in each per-cpu QEMU note will + be translated, and the dumpfile offset address of each QEMU note will be + displayed. + + * Introduction of support for the 32-bit MIPS architecture. This initial + support is restricted to 32-bit MIPS kernels that are configured as + little-endian. With respect to dumpfile types, only ELF vmcores are + recognized. In addition to building crash as a 32-bit MIPS binary, it is + also possible to build crash as an x86 binary on an x86 or x86_64 host so + that crash analysis of MIPS dumpfiles can be performed on an x86 or x86_64 + host. The x86 binary can be built by entering "make target=MIPS" for the + initial build; subsequent builds with MIPS support can be accomplished by + entering "make" alone. + + * Added support for big-endian 32-bit MIPS kernels. Only native MIPS crash + binaries may be built with big-endian support; running the "make + target=MIPS" build option on an x86 or x86_64 host creates x86 binaries + with little-endian support only. + + * Update the "ps" help page to reflect that the "ps -l" option may be based + upon the task_struct's sched_entity.last_arrival. Without the patch, it + indicates that either the task_struct's last_run or timestamp value are + used. + + * Fix for the "kmem -z" option output to change the zone structure's + pages_scanned field from a signed to an unsigned long integer. + + * Fix for "kmem -z" option on Linux 2.6.30 and later kernels. Without the + patch, the zone structure's all_unreclaimable and pages_scanned fields are + not dumped. + + * Fix for the PPC64 "bt" command on both big-endian and little-endian + architectures. Without the patch, backtraces of the active tasks may be + "empty" on little-endian machines, or show a one-liner of the form: "#0 + [c0000005f4db7a60] (null) at 501 (unreliable)" on big-endian machines. + + * Additional output for the "help [-D|-n]" options for the PPC64 + architecture. For compressed kdump and ELF kdump dumpfiles, the + elf_prstatus structure in each per-cpu NT_PRSTATUS note will be + translated. + + * The "help -r" option has been extended to dump the PPC64 registers stored + in each per-cpu NT_PRSTATUS note in compressed kdump and ELF kdump + dumpfiles. + + * Prevent "help -r" and "help -[D|n]" from generating a segmentation + violation when attempting to access non-existent NT_PRSTATUS notes for + offline cpus in ELF or compressed kdumps. + + * Fix for the "kmem -V" option output to change the display of the + vm_event_states fields from signed to unsigned long integers. + + * Fix to allow the "ps -G" qualifier to be used in conjunction with the "ps + -p" option. Without the patch, "ps -G -p" fails with the error message + "ps: do_list: hash queue is in use?" + + * Fix for the "runq" command on kernels that are configured with + CONFIG_RT_GROUP_SCHED=n. Without the patch, real-time tasks queued on a + per-cpu rt_rq.rt_prio_array will not be displayed under the "RT + PRIO_ARRAY" header. + + * Fix for a regression introduced in crash-7.0.9 when running on a live + 32-bit ARM machine. Without the patch, a segmentation violation is + generated during session initialization. + + * Enhancement of the "PANIC:" message displayed by the initial system banner + and by the "sys" command. Without the patch, many panic types are + categorized under the same generic message of the form: + + PANIC: "Oops: 0000 [#1] SMP " (check log for details) + + or in other types of crashes, no message is displayed at all. With this + patch, a more comprehensive search is made of the kernel log for a more + informative panic message. + + * Add appropriate checks for the MIPS architecture to allow extension + modules to be loaded with the "extend" command. + + * Update the extensions/trace.c extension module to account for the movement + of the ftrace_event_call.name member into an anonymous union in Linux + 3.15, commit de7b2973903c6cc50b31ee5682a69b2219b9919d. + + * Added support for VMware .vmss suspended state files as dumpfiles. + Similar to all other supported dumpfile types, it is invoked as: + + $ crash vmlinux .vmss + + A ".vmss" file created by the VMware vSphere ESX hypervisor + contains a header and the full memory image. A ".vmss" file + created by the VMware Workstation facility only contains the header, and + must be accompanied by a companion ".vmem" memory image that is + located in the same directory as the ".vmss" file. + + -- Troy Heber Wed, 27 May 2015 11:20:02 -0600 + +crash (7.0.9-1) UNRELEASED; urgency=medium + + * Fix the CPU timer and clock comparator output for the "bt -a" command on + S390X machines. The output of CPU timer and clock comparator has always + been incorrect because: - We added S390X_WORD_SIZE (8) instead of 4 to get + the second word - We did not left shift the clock comparator by 8 The fix + gets the complete 64 bit values and by shifting the clock comparator + correctly. + + * Add "/lib/modules//build" to the list of directories that are + searched for the currently-running kernel on live systems. This will + automatically locate the vmlinux namelist for kernels that were locally + installed with "make modules_install install". + + * Addressed 3 Coverity Scan issues: + (1) task.c: initialize the "curr" and "curr_my_q" variables in the + dump_tasks_in_task_group_cfs_rq() function. + (2) ramdump.c: make the "rd" and "len" return values from read() and + write() calls in write_elf() to be ssize_t types. + (3) cmdline.c: make the parsed PATH string buffer equal to the size of the + PATH string + 1 to prevent a possible buffer overflow when a command line + starts with a "!". + + * Fix for the one-time (dumpfile), or as-required (live system), gathering + of tasks from the kernel pid_hash[] in 2.6.24 and later kernels. Without + the patch, if an entry in a pid_hash[] chain is not related to the + "init_pid_ns" pid_namespace structure, any remaining entries in the hlist + chain are skipped. + + * Update the "extensions/snap.mk" file to allow the "snap.so" extension + module to be built outside of a crash source tree on a ppc64le PPC64 + little-endian host. Without the patch, "make -f snap.mk" would fail to + compile, indicating "gcc: error: macro name missing after '-D'" + + * Improve the method for determining whether a 32-bit ARM vmlinux is an LPAE + enabled kernel by first checking whether CONFIG_ARM_LPAE exists in the + vmcoreinfo data, and if it does not, by then checking whether the next + higher symbol above "swapper_pg_dir" is 0x5000 bytes higher in value. + + * Fix "defs.h" for building extension modules outside of the crash utility + source tree on PPC and PPC64 machines. Without the patch, both PPC and + PPC64 will get #define'd if the extension module build procedure does not + #define one or the other, which in turn causes multiple conflicting + declarations. + + * Fix for the "ps" command performance degradation patch the was introduced + in crash-7.0.8. Without this patch, it is possible that the "ps" command + may fail prematurely with the error message "ps: bsearch for tgid failed: + task:
tgid: " when running on a live system or against a + "live" dumpfile. + + * Set the 32-bit ARM HZ value to a default value of 100 if the kernel was + not configured with CONFIG_IKCONFIG. Without the patch, the initial + system banner and the "sys" command show "UPTIME: (cannot calculate: + unknown HZ value)", the "ps -t" option shows "RUN TIME: (cannot calculate: + unknown HZ value)", and the "timer -r" option kills the crash session with + a floating point exception. + + * Fix the error message displayed if the vmlinux or vmcore file is not the + same endian as the crash utility binary. Without the patch the filename + is shown with the incorrect/opposite endian type. + + * Update the "ps" command's "ST" task state display to recognize the + TASK_PARKED state in Linux 3.9 and later kernels. Without the patch, the + command's "ST" column entry for parked tasks shows "??". The state column + will now show "PA", and the foreach command will accept "PA" as a "state" + argument. + + * Fortify the protection against the use of an invalid/corrupted CONFIG_SLAB + kmem_cache per-cpu array_cache.limit value during session initialization. + In a recently seen vmcore, several of the array_cache.limit values were + corrupted such that they were stored as negative values, which in turn + caused the "kmem -[sS]" options to fail immediately with a dump of the + internal memory buffer allocation statistics and the error message "kmem: + cannot allocate any more memory!". + + * Implement a new "offline" internal crash variable that can be set to + either "show" (the default) or "hide". When set to "hide", certain + command output associated with offline cpus will be hidden from view, and + the output will indicate that the cpu is "[OFFLINE]". The new variable + can be set during invocation on the crash command line via the option + "--offline [show|hide]". During runtime, or in a .crashrc or other crash + input file, the variable can be set by entering "set offline [show|hide]". + The commands or options that are affected when the variable is set to + "hide" are as follows: + + o On X86_64 machines, the "bt -E" option will not search exception + stacks associated with offline cpus. + o On X86_64 machines, the "mach" command will append "[OFFLINE]" + to the addresses of IRQ and exception stacks associated with + offline cpus. + o On X86_64 machines, the "mach -c" command will not display the + cpuinfo_x86 data structure associated with offline cpus. + o The "help -r" option has been fixed so as to not attempt to + display register sets of offline cpus from ELF kdump vmcores, + compressed kdump vmcores, and ELF kdump clones created by + "virsh dump --memory-only". + o The "bt -c" option will not accept an offline cpu number. + o The "set -c" option will not accept an offline cpu number. + o The "irq -s" option will not display statistics associated with + offline cpus. + o The "timer" command will not display hrtimer data associated + with offline cpus. + o The "timer -r" option will not display hrtimer data associated + with offline cpus. + o The "ptov" command will append "[OFFLINE]" when translating a + per-cpu address offset to a virtal address of an offline cpu. + o The "kmem -o" option will append "[OFFLINE]" to the base per-cpu + virtual address of an offline cpu. + o The "kmem -S" option in CONFIG_SLUB kernels will not display + per-cpu data associated with offline cpus. + o When a per-cpu address reference is passed to the "struct" + command, the data structure will not be displayed for offline + cpus. + o When a per-cpu symbol and cpu reference is passed to the "p" + command, the data will not be displayed for offline cpus. + o When the "ps -[l|m]" option is passed the optional "-C [cpus]" + option, the tasks queued on offline cpus are not shown. + o The "runq" command and the "runq [-t/-m/-g/-d]" options will not + display runqueue data for offline cpus. + o The "ps" command will replace the ">" active task indicator to + a "-" for offline cpus. + + The initial system information banner and the "sys" command will display + the total number of cpus as before, but will append the count of offline + cpus. Lastly, a fix has been made for the initialization time + determination of the maximum number of per-cpu objects queued in a + CONFIG_SLAB kmem_cache so as to continue checking all cpus higher than the + first offline cpu. These changes in behavior are not dependent upon the + setting of the crash "offline" variable. + + * Adjustment to the "offline" patch-set to make the initial system banner, + the "sys" command, and the X86_64 "mach" command, to only show the + "OFFLINE" cpu count if there are actually offline cpus. + + * Make the "bt -E" option conform to a "-c cpu(s)" specification when the + the two options are used together. Without the patch, "bt -E" ignores a + cpu specifier. + + * Fix for the determination of the cpu count on 32-bit ARM machines. + Without the patch, if certain patterns of cpus are offline, the count may + be too small, causing cpu-dependent commands to not recognize online cpus. + + * Fix for a missing exception frame dump by the X86_64 "bt" command when an + IRQ is received while a task is running on its per-cpu interrupt stack + with interrupts enabled. + + * Fix for the determination of the cpu count on ARM64 machines. Without the + patch, if certain patterns of cpus are offline, the count may be too + small, causing cpu-dependent commands to not recognize online cpus. + + * Fix for a possible SIGSEGV generated during session initialization while + "please wait... (determining panic task)" is being displayed. This was + caused by a patch introduced in crash-7.0.8, and can only happen when + analyzing dumpfiles whose header does not contain the requisite + information to determine the panic task and the active tasks do not have + any crash-related traces in their kernel stacks. It should be noted that + the SIGSEGV can be avoided by entering "--no_panic" on the crash command + line. + + * Fix for a SIGSEGV generated by the "bt -a" or "help -r" commands if the + NT_PRSTATUS notes in a compressed kdump are invalid/corrupt. If all cpus + are online but the dumpfile initialization that cycles through the + NT_PRSTATUS notes does not find exactly one note per cpu, then the + register contents in those notes should not be used. + + * Fix for data access from "split" compressed kdump dumpfiles. Without the + patch, if a dumpfile read targets physical memory in the first memory page + stored in the second or later sequential split dumpfile, incorrect data + will be returned. + + * Correction of the copyright and authorship of ramdump.c. + + * Added recognition of the new DUMP_DH_COMPRESSED_INCOMPLETE flag in the + header of compressed kdumps, and the new DUMP_ELF_INCOMPLETE flag in the + header of ELF kdumps. If the makedumpfile(8) facility fails to complete + the creation of compressed or ELF kdump vmcore files due to ENOSPC or + other error, it will mark the vmcore as incomplete. If either flag is + set, the crash utility will issue a warning that the dumpfile is known to + be incomplete during initialization, just prior to the system banner + display. When reads are attempted on missing data, a read error will be + returned. As an alternative, zero-filled data will be returned if the + "--zero_excluded" command line flag is used, or the "zero_excluded" + runtime variable is set to "on". In either case, the read errors or + zero-filled memory may cause the crash session to fail entirely, cause + commands to fail, or may result in other unpredictable runtime behavior. + + * If a kernel has been configured with CONFIG_DEBUG_INFO_REDUCED, then the + crash utility will fail to initialize, typically with a message indicating + "no debugging data available". However, it has been reported (on a 32-bit + ARM system) that the initialization sequence continued on beyond that + message point, and the session failed later on with the message "neither + runqueue nor rq structures exist". As an aid to understanding why the + session failed, if the target kernel is configured with CONFIG_IKCONFIG, + and CONFIG_DEBUG_INFO_REDUCED has been set to "y", a relevant warning + message will be displayed. + + * Implemented support for this Linux 3.18 commit for kernels that are + configured with CONFIG_SLAB: + + commit bf0dea23a9c094ae869a88bb694fbe966671bf6d + mm/slab: use percpu allocator for cpu cache + + The commit above redesigned the kmem_cache.array_cache[] from a hardwired + array to a per-cpu pointer referencing external array_cache structures. + Without the patch, the crash session would fail during initialization with + the message "crash: cannot resolve cache_cache". Note that it could be + worked around by using the "--no_kmem_cache" command line option, with a + resulting loss of functionality for commands requiring slab-related data. + + * Implemented a new "sys -t" option that displays kernel taint information. + If the "tainted_mask" symbol exists, the option will show its hexadecimal + value and translate each bit set to the symbolic letter of the taint type. + On kernels prior to 2.6.28 which had the "tainted" symbol, only its + hexadecimal value is shown. The relevant kernel sources should be + consulted for the meaning of the letter(s) or hexadecimal bit value(s). + + * Cosmetic fix for the "help -[n|D]" translation of the bitmap contents of + the kdump_sub_header.dump_level flag in compressed kdump dumpfiles. + + * Fix for the support of compressed kdump clones created with the KVM "virsh + dump --memory-only --format " command, where the + compression-type is either "kdump-zlib", "kdump-lzo" or "kdump-snappy". + Without the patch, if an x86_64 guest kernel was loaded with a non-zero + "phys_base", the "--machdep phys_base=" command line option was + required as a workaround or the crash session would fail with the warning + message "WARNING: cannot read linux_banner string" followed by the fatal + error message "crash: vmlinux and do not match!". + + -- Troy Heber Mon, 27 Apr 2015 08:28:11 -0600 + +crash (7.0.8-1ubuntu3) vivid; urgency=medium + + * Linux-4.0.patch: Support 4.0+ kernel versions. (LP: #1444528) + + -- Chris J Arges Wed, 15 Apr 2015 10:12:21 -0500 + +crash (7.0.8-1ubuntu2) vivid; urgency=medium + + * Fix-for-the-PPC64-bt-command-on-both-big-endian-and-.patch (LP: #1429250) + + -- Chris J Arges Tue, 07 Apr 2015 13:52:16 -0500 + +crash (7.0.8-1ubuntu1) utopic; urgency=medium + + * FFe LP: #1381999. + - 7.0.8 adds upstream support for new architectures + - fixing ftbfs on arm64. + * Merge with Debian; remaining changes: + - Build for armhf, arm64, ppc64el. + - Minor fixes for live autopkgtest. + - debian/tests/live: Redirect gpg stderr to stdout, as that's the only + known and expected stderr source. + + -- Matthias Klose Thu, 16 Oct 2014 12:42:59 +0200 + +crash (7.0.8-1) unstable; urgency=medium + + * 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 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 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 " 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. + + -- Troy Heber Wed, 17 Sep 2014 08:30:13 -0600 + +crash (7.0.7-1ubuntu1) utopic; urgency=medium + + * Merge with Debian; remainging changes: + - Build for armhf, arm64. + - Minor fixes for live autopkgtest. + - debian/tests/live: Redirect gpg stderr to stdout, as that's the only + known and expected stderr source. + - Add ppc64el support. + + -- Matthias Klose Fri, 08 Aug 2014 14:03:57 +0200 + +crash (7.0.7-1) unstable; urgency=low + + * Export the static ELF and compressed kdump vmcoreinfo_read_string() + functions from netdump.c and kdump.c via a new read_vmcoreinfo() method in + the global program_context structure. The function + get_log_from_vmcoreinfo() will access vmcoreinfo data via the new pointer + instead of requiring its callers to pass pointers to their + dumpfile-specific function. + * Linux 3.15 and later kernels configured with CONFIG_RANDOMIZE_BASE can be + now be readily identified because of new kernel symbols that have been + added. For those kernels, the new "--kaslr=" and/or + "--kaslr=auto" options are not necessary for ELF or compressed kdump + vmcores, or for live systems that have /proc/kallsyms showing the + relocated symbol values. A new KASLR initialization function called + kaslr_init() is now called by symtab_init() prior to the initial + symbol-sorting operation. If kaslr_init() determines that KASLR may be in + effect, it will trigger a search for the relevant vmlinux symbols during + the sorting operation, which in turn will cause the relocation value to be + automatically calculated. + * Implemented a new "bt -c cpu(s)" option to display the backtrace of the + active task on one or more cpus. The cpus must be specified in a comma- + and/or dash-separated list; for examples ""3", "1,8,9", "1-23", or + "1,8,9-14". Similar to "bt -a", the option is only applicable with crash + dumps. + * Fix for Linux 3.11 and later ARM kernels, in which all non-panicking cpus + offline themselves during a kdump procedure. This causes an invalid cpu + count determination during crash session initialization from an ARM + vmcore. The patch utilizes the cpu count found in the cpu_active_map if + it is greater than the count in the cpu_online_map. In addition, the + maximum NR_CPUS value for the ARM architecture has been raised from 4 to + 32. + * Fix for the X86_64 "bt" command on Linux 3.3 and later kernels to properly + display exception frame register contents on NMI stacks. Kernel commit + 3f3c8b8c4b2a34776c3470142a7c8baafcda6eb0 added 12 more values to the NMI + exception stack to handle nested NMIs caused by page faults or breakpoints + that could occur while handling an NMI exception. + * Kernel commit 28696f434fef0efa97534b59986ad33b9c4df7f8 changed the stack + layout again, swapping the location of the "saved" and "copied" registers. + This can be detected automatically, because the "copied" registers contain + either a copy of the "saved" registers, or point to "repeat_nmi". So, if + "repeat_nmi" is found as the return address, assume that this is the old + layout, and adjust the stack pointer again. Without the patch, incorrect + register values are displayed in the exception frame dump in the NMI stack + backtrace. + * Fix for the built-in "g" alias, which apparently has not worked correctly + since crash-5.1.4. Without the patch, if the "g" alias and the first + argument are separated by one space, then the first first character of + that argument would get stripped prior to being passed to the embedded gdb + module. + * Removed the BASELEVEL_REVISION string from defs.h, which serves no purpose + since the deprecation of the remote daemon, and typically has been out of + sync with the crash version. + * Fix for the "p", "irq", "struct", "union" and "*" commands if a cpu + specification contains an invalid cpu number. Without the patch, a + segmentation violation may be generated. + * Implemented a new capability for the "ptov" command that takes a per-cpu + offset and cpu specification argument and translates it into the kernel + virtual addresses for the cpus specified. + * Implemented a new "ps -m" option that is a similar, complementary option + to "ps -l", but which translates the task timestamp value from a decimal + or hexadecimal nanoseconds value into a more human-readable string + consisting of the number of days, hours, minutes, seconds and milliseconds + that have elapsed since the task started executing on a cpu. More + accurately described, it is the time difference between the timestamp + copied from the per-cpu runqueue clock when the task last started + executing compared to the most current value of the per-cpu runqueue + clock. + * In addition, a new "ps -C " option has been added that can + only be used with "ps -l" and "ps -m", which sorts the global task list + into per-cpu blocks; the cpu-specifier uses the standard comma or dash + separated list, expressed as "-C 1,3,5", "-C 1-3", "-C 1,3,5-7,10", or + "-Call" or "-Ca" for all cpus. + * Implemented a new "runq -m" option that is a simliar, complementary option + to "runq -t", but which displays the amount of time that the active task + on each cpu has been running, expressed in a format consisting of days, + hours, minutes, seconds and milliseconds. + * Implemented a new "kmem -h" option that displays the address of each + hugepage hstate array entry, its hugepage size, its free and total counts, + and name string. + * Implemented a new "ps -S" option that displays a summary consisting of the + number of tasks in a task state. + * Fix for the "arguments-input-file" feature to protect against a called + command modifying an argument string. For example, the "struct" command + modifies "-l struct_name.member" argument strings, and so without the + patch, all iterative calls after the first one will fail. + * Fix failure to build from source when compiling the crash utility with + gcc-4.9 (closes: #746835) + * Fix for displaying enum values that are greater than 32-bits in size. + Without the patch, the upper 32-bits are clipped off and displayed as + integer-sized value. + * If the kernel (live or dumpfile) has the "kpatch" module installed, the + tag "[KPATCH]" will be displayed next to the kernel name in the initial + system banner and by the "sys" command. + * Fix for the "DEBUG KERNEL:" display in the initial system banner and by + the "sys" command when using a System.map file with a Linux 3.0 and later + debug kernel. Without the patch, the kernel version is not displayed in + parentheses following the debug kernel name. + * If the gdb-.patch file has changed and a rebuild is being done + from within a previously-existing build tree, "patch -N" the gdb sources, + and start the rebuild from the gdb- directory instead of the + gdb-/gdb directory. + * Fix to prevent a possible segmentation violation generated by the "runq + -g" command when run on a very active live system due to an active task on + a cpu exiting while the command is running. + * Fix for the "runq -g" command on Linux 3.15 and later kernels, where the + cgroup_name() function now utilizes kernfs_name(). Without the patch, the + command fails with the error message "runq: invalid structure member + offset: cgroup_dentry". + * Fix for the "extend" command when running with an x86_64 crash binary that + was built with "make target=ARM64" in order to analyze ARM64 dumpfiles on + an x86_64 host. Without the patch, if the extend command is used with an + extension module built in the same manner, it fails with the message + "extend: .so: not an ELF format object file". + * Introduce support for 32-bit ARM kernels that are configured with + CONFIG_ARM_LPAE. The patch implements the virtual-to-physical address + translation of 64-bit PTEs used by ARM LPAE kernels. + + -- Troy Heber Mon, 16 Jun 2014 10:24:39 -0600 + +crash (7.0.6-1) unstable; urgency=low + + * Fix for custom X86_64 kernels that change the declaration of the + context_switch() function so that it is not an inline function. Without + the patch, the message "crash: cannot determine thread return address" is + displayed during invocation, and backtraces of blocked tasks may have + missing or invalid frames. + * Fix to prevent a possible invocation-time error on Linux 3.7 and later + kernels configured with CONFIG_SLAB, running against vmcore files filtered + with the makedumpfile(8) facility. Without the patch, the message "crash: + page excluded: kernel virtual address:
type: kmem_cache buffer" + is immediately followed by the message "crash: unable to initialize kmem + slab cache subsystem". Because of a kernel data structure name change + from "cache_cache" to "kmem_cache_boot", the crash utility failed to + properly downsize the stored size of the kernel's kmem_cache data + structure from the size indicated by the vmlinux debuginfo data. This in + turn could lead to reading beyond the end of a kmem_cache data structure + into a page of memory that had been excluded from the vmcore. The fix was + also applied to kernels configured with CONFIG_SLUB. + * Added a new "--kaslr " command line option for X86_64 kernels that + are configured with CONFIG_RANDOMIZE_BASE. The offset value must be equal + to the difference between the symbol values compiled into the vmlinux file + and their relocated KASLR values. + * Added a new "--kaslr=auto" command line option for X86_64 kernels that + that are configured with CONFIG_RANDOMIZE_BASE. When set to "auto", the + KASLR relocation value will be determined automatically by comparing the + "_stext" symbol value compiled into the vmlinux file with the _stext + symbol value stored in kdump vmcoreinfo data; on live systems the + comparison will be made with the "_stext" symbol value that is found in + /proc/kallsyms. + * Enable kernel text line number capability for the "dis -l", "bt -l", "sys + -c", and "sym" commands for kernels that are configured with + CONFIG_RANDOMIZE_BASE. + * Fix for the "crash --log vmcore" command to account for the kernel data + structure and VMCOREINFO string name changes from "log" to "printk_log" in + Linux 3.11-rc4 and later kernels. Without the patch, the command fails + with the error message "crash: VMCOREINFO: no log buffer data". + * Adjustment to the internal symbol-handling to prevent the usage of kernel + system call alias/wrapper names, for examples, "SyS_read" and + "compat_SyS_futex" instead of "sys_read" and "compat_sys_futex". Without + the patch, commands such as "dis", "sym
", and "sys -c" display + the alias/wrapper name instead of the real system call name in Linux 3.10 + and later kernels. + * Increase the internal hash queue head count from 128 to 32768. The hash + queue is used for gathering and verifying lists, and the original count of + 128 may be overwhelmed if a list is extremely large. For example, on a + 256GB system with 192GB of free pages, the "kmem -f" command takes hours + to complete; with this patch, the time is reduced to a few minutes. In + addition, a new command line option "--hash " has been added to + allow a user to override the default hash queue head count of 32768. + * Fix for the "kmem -F" display and the "kmem -f
" or "kmem +
" options. Without the patch, "kmem -F" does not display the + first page in a list of free page blocks on its own line, but rather at + the end of the previous line that shows the area number, block size, and + free_area struct address that the page is linked to. Due to this error, + both "kmem -f
" and "kmem -f address>" would not find the + associated page or page block if it happened to be the first page or page + block in the list. + * Created a new feature for the internal do_list() function if it is + necessary to immediately perform a function for each entry in a list while + the list is being traversed. A callback function, and an option callback + data pointer, can be registered in the list_data structure. The address + of each entry in the list along with the optional callback data pointer + will be passed to the callback function. If desired, the callback + function may also dictate that do_list() should stop the list traversal + and return immediately to its caller. + * Made the "kmem -f
" and "kmem
" options more efficient + by using the new do_list() callback function feature above as well as + restricting the search to only the NUMA node that contains the address. + * If the first assembly language instruction in an X86_64 function is "nopl + 0x0(%rax,%rax,1)" or "data32 data32 data32 xchg %ax,%ax", which are + generated when the ftrace facility is configured, the X86_64 "dis" command + will append "[FTRACE NOP]" to the line. + * Correction for the "crash -h" and crash.8 man page documentation of the + "--machdep phys_base=" command line option. In both + places the parameter mistakenly indicated "physbase". + * If a host build system does not have /usr/bin/wget installed, and the + crash package is built from a directory that was git-cloned from + github.com/crash-utility/crash.git, the error message has been clarified + to indicate "/usr/bin/wget is required to download gdb-7.6.tar.gz". + Without the patch, the message indicates "tar (child): gdb-7.6.tar.gz: + Cannot open: No such file or directory". + * Updated the ARM64 implementation to support Linux 3.13 and later kernels + that expand to a 42-bit address space when 64K pages are configured. This + is also the first crash version that has been tested on a live ARM64 + system with 4K pages, where it cleanly make it to the "crash>" prompt. + However, it should be noted that some commands (most notably "bt") still + do not work as of yet. + * Document the "--machdep phys_offset=" command line + option for the ARM64 architecture in the crash.8 man page and the "crash + -h" output. + * Fix for KVM dumpfiles created with "virsh dump --memory-only" if an X86_64 + kernel was loaded with a non-zero "phys_base". Without the patch, the + crash session fails with the warning message "WARNING: cannot read + linux_banner string" followed by the fatal error message "crash: vmlinux + and do not match!". + * Initial working implementation of the basic ARM64 "bt" command, with + several command options still under development. In-kernel exception + frames are only dumped if the exception handler function is contained + within the symbol boundaries from "__exception_text_start" to + "__exception_text_end"; when ARM64 kdump is eventually implemented, + further exception-related work will be resumed. + * Cleaned up the exception frame displays of 64-bit in-kernel and both + 32-bit and 64-bit user-mode exceptions. + * Implemented support for the ARM64 "bt -e" option. + * Implemented support for the ARM64 "bt -l" option. + * Update for the X86_64 "bt -l" option such that it also displays the + available file and line number information for functions indicated as the + "exception RIP" in kernel exception frames. The line number information + will follow the exception frame register dump. + * Fix for the ARM64 virtual-to-physical translation of vmemmap page + structure addresses for kernels configured with 4K pages. Without the + patch, any command that required the contents of a page structure would + fail with a readmem error. + * Added support for the ARM64 architecture in the extensions/snap.c + extension module. Also fixed the progress percentage display to correct + for systems which have non-zero starting physical addresses. + * Implemented support for the ARM64 "bt -f" and "bt -F[F]" options. + * Increase the ARM64 PTRS_PER_PGD_L2_64K from 1024 to 9182 to account for + the Linux 3.13 increase of the ARM64 virtual address space size from 39 to + 42 bits when 64K pages are configured. Without the patch, the warning + message "WARNING: cannot access vmalloc'd module memory" is displayed + during session initialization. + * Fix for the "vm -p" option on ARM64 so that file-backed pages are properly + translated to the filename and offset. Without the patch, file-backed + pages are erroneously shown as being backed on a swap device. + * Increment maximum ARM64 physical address from 40 to 48 bits to match + upstream kernel commit 87366d8cf7b3f6dc34633938aa8766e5a390ce33. + * Fix for a segmentation violation generated by the "crash -g vmlinux" + command on ARM64. + * Fix for the ARM64 "vtop
" command on kernels configured with 64K + pages if the address argument is located in the kernel logical memory map + region, which uses 512MB hugepage mappings. Without the patch, the + verbose page table walk mistakenly continues to the PTE level. + * Fix for ARM64 /proc/kcore support. Without the patch, the crash session + fails with the warning message "WARNING: cannot read linux_banner string" + followed by the fatal error message "crash: vmlinux and do + not match!". At this point in time, the kernel requires a patch to the + ARM64 kern_addr_valid() function to properly allow memory to be read from + the kernel logical memory map region. + + -- Troy Heber Thu, 05 Jun 2014 09:26:32 -0600 + +crash (7.0.5-1ubuntu1) utopic; urgency=medium + + * Merge with Debian; remaining changes: + - Build for armhf, arm64. + - Minor fixes for live autopkgtest. + - debian/tests/live: Redirect gpg stderr to stdout, as that's the only + known and expected stderr source. + * Add ppc64el support (Bharata Rao, Mauricio Faria de Oliveira). + + -- Matthias Klose Thu, 15 May 2014 18:22:35 +0200 + +crash (7.0.5-1) unstable; urgency=low + + * New upstream version 7.0.5 + * Fix for the "runq -g" option for kernels that are configured with + CONFIG_FAIR_GROUP_SCHED, but not CONFIG_CFS_BANDWIDTH. Without the patch, + the command fails with the message "runq: invalid structure member offset: + cfs_rq_throttled". + * Add support for Xen PVH guest types introduced in Xen 4.4. Without the + patch, running against a Xen 4.4 hypervisor binary would fail during + session initialization with the error message "crash: invalid structure + member offset: domain_is_hvm". In addition, the PVH guest type is being + registered internally as an HVM guest type, the debug "help -X ofs" + command's display of the domain_domain_flags offset has been fixed to show + it in decimal, and the setting of the internal dc->domain_flags has been + fixed to contain all flags set, not just the first one found. + * Fix for the "kmem -S" command on Linux 3.1 and later kernels that are + configured with CONFIG_SLUB. Because the the page structure's inuse and + objects fields used by SLUB were changed from discrete u16 types to + bit-fields within an unsigned int, the display of per-node partial slab + statistics are incorrect. Without the patch, the TOTAL and ALLOCATED + values are incorrectly shown as equal values, and therefore the FREE value + is always zero. + * Fix for the "kmem -S" command for kernels that are configured with + CONFIG_SLUB. Eash per-cpu slab object dump may show incorrect ALLOCATED + and FREE values; and as seen on Linux 3.5 and later kernels, the TOTAL + value and the number of individual objects dumped may also be incorrect + (too small). + * When executing the commands from an input file specified by the "-i + " command line option, or when accepting input from a file as a set + of commands or as a set of command arguments using the "<" redirection + character, unconditionally cease the operation if CTRL-c is entered. + Without the patch, depending upon the command that was running when the + SIGINT was received, the operation may continue uninterruptibly until the + file contents are consumed. + * Enhanced the "bt -F" option such that if "-F" is entered twice, and if the + stack frame contents reference a slab cache object, both the slab cache + name and the stack contents will be displayed within brackets. + * Enhanced the "rd -S" option such that if "-S" is entered twice, and if the + memory contents reference a slab cache object, both the slab cache name + and the memory contents will be displayed within brackets. + * Fix for the X86_64 "bt" command to prevent an unwarranted message + indicating "WARNING: possibly bogus exception frame" generated from a + blocked kernel thread that was in the process of exec'ing a user process + via the call_usermodehelper() facility. + * Fix for the X86_64 "bt" command to more correctly determine the function + frame that called into an interrupted function. Without the patch, the + first frame just above an IRQ exception frame register dump may show an + invalid/stale function. + * Fix for the X86_64 "bt" command if a page fault exception was generated by + the invalid contents of the RIP register. Without the patch, the + exception frame register dump is not displayed above the "page_fault" + stack frame; and in a related issue, the "bt -e" option will not find and + display the exception frame. + * When invoking a crash session with a compressed vmlinux file, make the + same host-machine/vmlinux endian verification that is done with + uncompressed vmlinx files. + * Reduce the number of CTRL-c entries required to unconditionally terminate + any manually-entered command from three to one. + * Fix for the X86_64 "bt" command if an async page fault exception occurred + in a KVM guest running a Linux 2.6.38 or later kernel. Without the patch, + the exception frame register dump is not displayed above the + "async_page_fault" stack frame. + + -- Troy Heber Mon, 14 Apr 2014 14:59:30 -0600 + +crash (7.0.3-3ubuntu2) trusty; urgency=low + + * debian/tests/live: Previous merge dropped the "allow-stderr" restriction. + Redirect gpg stderr to stdout, as that's the only known and expected + stderr source. + + -- Martin Pitt Thu, 21 Nov 2013 09:47:25 +0100 + +crash (7.0.3-3ubuntu1) trusty; urgency=low + + * Merge with Debian; remaining changes: + - Build for armhf, arm64. + * Minor fixes for live autopkgtest. + + -- Chris J Arges Mon, 18 Nov 2013 08:22:03 -0600 + +crash (7.0.3-3) unstable; urgency=low + + * Add autopkgtest and try to keep the Debian and Ubuntu crash packages in + sync (closes: #721095) + + -- Troy Heber Thu, 07 Nov 2013 08:14:34 -0700 + +crash (7.0.3-2) unstable; urgency=low + + * Fix from Louis Bouchard to resolve FTBS on + i386 + + -- Troy Heber Wed, 06 Nov 2013 09:41:06 -0700 + +crash (7.0.3-1) unstable; urgency=low + + * Fix for the ARM architecture if the backtrace unwind information cannot be + gathered during session initialization. Without the patch, the two + unwind-related warning messages indicating "WARNING: UNWIND: failed to + gather unwind_table list" and "WARNING: UNWIND: failed to initialize + module unwind tables" are followed by the fatal error message "crash: + cannot hash task_struct entries". + + * Fix for the "help -[Dn]" dumpfile information display of the GUID EFI + table in the header of SADUMP dumpfiles. Without the patch, only 33 of + the 36 bytes in the table are translated. + + * Fix for the determination of the kernel NR_CPUS configurable for Linux 3.8 + and later kernels that are configured with CONFIG_SLAB. Without the + patch, the kernel's compiled-in NR_CPUS value was incorrectly calculated + to be the sum of the kernel's NR_CPUS and MAX_NUMNODES configurables. + + * In the next release of makedumpfile, the status field of the dumpfile + header of compressed kdumps will show the compression type that was + utilized. The "help -[Dn]" output has been updated to display that + information. + + * For kernels configured with CONFIG_SLAB in which an array_cache pointer + referenced by a kmem_cache structure is invalid, the individual cache(s) + will be marked as invalid. During session initialization, the message + "crash: kmem_cache: : invalid array_cache pointer" will be + displayed, and during runtime, attempts to access the cache(s) will result + in a message indicating that the cache is "[INVALID/CORRPUTED]". Without + the patch, the message "crash: unable to initialize kmem slab cache + subsystem" is displayed during session initialization, and run-time + commands that attempt to access the kmem slab cache subsystem fail with + the error message "kmem cache slab subsystem not available". + + * Fix for the "kmem -[sS] " option in Linux 3.6 and + later kernels configured with CONFIG_SLAB. Without the patch, the command + fails with the message "kmem: address is not allocated in slab subsystem: + . This also causes the "kmem " + command to (quietly) fail to determine that the address is a slab object. + + * Fix for the "bt" command if a kernel __init text address is encountered. + Without the patch, and depending upon the reallocation of the __init text + memory, a bogus framesize may be calculated, or more likely, in a + compressed kdump, a warning message indicating "bt: page excluded: kernel + virtual address:
type: gdb_readmem_callback" will be displayed + following the frame data. + + * Update for determining whether an S390X PTE contains a swap entry in Linux + 3.12 and later kernels. + + * Resurrected the translation and display of the page.flags bits by the + "kmem -p" command on Linux 2.6.26 and later kernels whose vmlinux + debuginfo data contains either the "pageflags" enumerator or the + "pageflag_names" array of trace_print_flags structures. If they are not + available, just the page.flags value is printed in hexadecimal, as has + been done since Linux 2.4.9. + + * Fix for the "bt" command when used with vmcore files that were created + with the recently-introduced "virsh dump --memory-only", which dumps KVM + guests into an ELF vmcore similar to those created by the kdump facility. + Without the patch, a faulty backtrace for the panic task may be generated + due to the use of incorrect starting RSP/RIP registers; this happens + because (unlike kdump) the non-panicking cpus are offlined prior to the + dumpfile being created, which in turn leads to the use of the wrong + NT_PRSTATUS note. + + * Fix for the CPU number display on systems with 255 or more cpus during the + initial banner, by the "set" command, the "ps" command, and by all + commands that display the per-task header consisting of the task address, + pid, cpu and command name. Without the patch, for cpu 255, the "sys" + command displays "NO_PROC_ID", and the other commands would show a "-" for + the cpu number; for cpu numbers greater than 255, garbage values would be + displayed in the cpu number field. + + * Implemented support for compressed kdump header version 6, in which + makedumpfile(8) adds new fields in the kdump_sub_header to support large + memory systems with pfn values that are larger than 32-bits. Without the + patch, if the system contains physical memory located in high memory such + that its maximum pfn value is overflows the 32-bit "max_mapnr" field in + the header, the crash session will fail with the error message "crash: + vmlinux and vmcore do not match!". + + * Fix for the "net -s" command on Linux 3.8 and later kernels. Without the + patch, the command fails with the message "net: invalid structure member + offset: inet_opt_daddr". + + * Fix a build failure in a native ARM64 environment due to obsolete LKCD + dumpfile headers. + + * Implementation of a new "per-cpu object" as an argument format that can be + passed to the "p", "struct", "union" or "*" commands. The format is + expressed as either : or as :, where the per-cpu symbol or per-cpu offset must + precede a colon, and where the follows the colon. + Without the patch, per-cpu symbols are only accepted by the "p" command, + and the data type and the resolved kernel virtual address for each per-cpu + instance are displayed shown. With this patch, a colon and a + cpu-specifier may be appended to the symbol name, and the the contents of + the symbol on each cpu that is specified will be displayed by the "p" + command. For the "struct/union/*" commands, an argument may be specified + using either a per-cpu offset value or per-cpu symbol name followed by a + colon and cpu-specifier, and the contents of each structure/union on each + specified cpu will be displayed. + + Fixed several minor flaws that were detected by a Coverity Scan. + + -- Troy Heber Wed, 30 Oct 2013 16:12:40 -0600 + +crash (7.0.2-1ubuntu1) trusty; urgency=low + + * Merge with Debian; remaining changes: + - Build for armhf. + - Add a live autopkgtest to run crash on running kernel. + * Build for AArch64. + + -- Matthias Klose Sat, 19 Oct 2013 16:54:49 +0200 + +crash (7.0.2-1) unstable; urgency=low + + * Added "bison" to the BuildRequires line of the crash.spec file. + Without the patch, the build of the embedded gdb-7.6 module will fail + unless either /usr/bin/bison or /usr/bin/yacc are available. The + failure will result in a stream of error messages from different + files that indicate: + + multiple definition of 'main' + undefined reference to 'c_parse_escape' + undefined reference to 'ada_parse' + undefined reference to 'ada_error' + undefined reference to 'c_parse' + undefined reference to 'c_error' + undefined reference to 'cp_demangled_name_to_comp' + undefined reference to 'cp_demangled_name_parse_free' + undefined reference to 'cp_comp_to_string' + undefined reference to 'cp_new_demangle_parse_info' + + and the build fails like so: + + collect2: ld returned 1 exit status + make[4]: *** [gdb] Error 1 + crash build failed + + If building with rpmbuild, the new BuildRequires "bison" entry will + prevent the build from initiating unless the bison package has been + installed. If building with the tar.gz file, the build attempt will + proceed and fail unless either the bison or byacc (Berkeley Yacc) + package is installed. + + * Fix the S390X initialization sequence on kernels that are configured + with CONFIG_STRICT_DEVMEM to automatically try /proc/kcore if: + + (1) the /dev/crash driver is not available, and + (2) the initial /dev/mem access fails. + + Without the patch, if /dev/mem is selected as the memory source and + it is restricted, the crash session will fail during initialization + with the error message "crash: read error: kernel virtual address: +
type: cpu_possible_mask". + + * When checking whether a argument on the crash command line is a dumpfile + that may be in makedumpfile's "flattened" format, do not bother checking + character device files. + + * Fix for the PPC64 virtual-to-physical virtual address translation + mechanism for vmalloc and user-space virtual addresses on Linux 3.10 and + later kernels. Without the patch, the message "WARNING: cannot access + vmalloc'd module memory" is displayed during initialization, and during + the crash session, if a command attempts to translate or read a vmalloc or + user-space virtual address, it will fail. + + * Clean up all files that emit "warning: format not a string literal and no + format arguments" when compiled with -Wformat-security warning option. + All instances of fprintf, sprintf and snprintf using the format + "fprintf(fp, buf)" are replaced with "fprintf(fp, "%s", buf)". Also, the + -Wformat-security warning option has been added to the option list used + when compiling with "make warn". + + * Fix a build failure when compiling with very old gcc-3.4.6 version on a + 2.6.9-based RHEL4 IA64 host. The bfd library in gdb-7.6 is compiled with + the -Werror option, and it fails with the message "elflink.c:4733: + warning: 'idx' might be used uninitialized in this function". + + * Fix a build failure when compiling with very old gcc-3.4.6 version on a + 2.6.9-based RHEL4 S390 or S390X hosts. The embedded gdb-7.6 fails to + compile with the error message "s390-nat.c:364: error: storage size of + 'iov' isn't known". + + * Fix to properly store two-digit kernel version numbers. (closes: #717036) + + * Fix to provide hugepage address translation for the "vtop" command on the + PPC64 architecture. + + * Fix for the "log" command to account for the kernel data structure name + change from "log" to "printk_log" in Linux 3.11-rc4 and later kernels. + Without the patch, the message "WARNING: log buf data structure(s) have + changed" will be displayed during initialization and by the "log" command. + + * Fix to add a linefeed after the description of the "kmem -I" option in the + "help kmem" output, which was recently added in crash-7.0.0. + + * Document the "-s" command line option in the "crash -h|--help" output and + in the crash.8 man page to also indicate that runtime command scrolling is + turned off by default. + + * Fix for the "irq -d" option on 2.6.25 and later X86_64 kernels to display + the Intel interrupt descriptor table contents. Without the patch, those + kernel versions would display "irq: -d option not supported or applicable + on this architecture or kernel". + + * Fix for the "kmem -[sS]" options on Linux 3.11-rc1 and later kernels that + are configured with CONFIG_SLAB. Without the patch, the command fails + with the error message "kmem: invalid structure member offset: + + * Fix for the "kmem
" and the "bt -F" options on Linux 3.8 and + later kernels that are configured with CONFIG_SLUB. Without the patch, + the command would fail with the error message "kmem: invalid structure + member offset: page_slab". + + * Fix misspellings in the "bt" and "search" help page output. + + * Fix for the determination of the base of the kernel's unity-mapped virtual + address region on recent ARM kernels whose "_stext" variable address has + changed from 0xc0008000 to 0xc0100000. Without the patch, the crash + session fails during invocation with the error message "crash: vmlinux and + vmcore do not match!". + + * When printing data structures, prevent the embedded gdb from symbolically + translating pointers that are not kernel virtual addresses. Kernel or + module symbols that are not virtual addresses can be mistaken for virtual + addresses, leading to NULL pointers being invalidly translated into a + symbol name from the vmlinux or module object file. For example, in + X86_64 kernels, NULL pointers are translated into the symbol + "irq_stack_union", whose value is not a virtual address, but rather a + per-cpu offset value of 0. + + * Fix for the "kmem -s
" or "kmem
" options on Linux 3.11 + and later kernels configured with CONFIG_SLAB. Without the patch, both + commands fail with the error message "kmem: cannot resolve cache_cache". + + * Fix to prevent the "bt" command from generating a segmentation violation + in a case where the per-cpu "current_task" variable and the runqueue's + "curr" variable did not agree, and the panic task had overflowed its + kernel stack. This led to the selection of the a starting RSP address + which belonged to the other task; without the patch, the command generated + a segmentation violation after printing the first frame of the backtrace. + + -- Troy Heber Wed, 16 Oct 2013 10:26:33 -0600 + +crash (7.0.1-3) unstable; urgency=low + + * Updated format-strings patch to cover additional architectures + * Requested update to packages-arch-specific to enable s390x and armel + (#717283) + + -- Troy Heber Tue, 16 Jul 2013 07:00:41 -0600 + +crash (7.0.1-2) unstable; urgency=low + + * Missed updating the Architecture line in the -1 upload, armel + (closes: #656132) + * Move defs.h to /usr/include/crash (closes: #702513) + * Patch from Stefan Bader to add a format string to all *printf calls + + -- Troy Heber Thu, 11 Jul 2013 08:51:32 -0600 + +crash (7.0.1-1) unstable; urgency=low + + * Enable armel (closes: #656132) + * Enable s390x (closes: #710675) + * Include the crash/defs.h header (closes: #702513) + * Sync with the Ubuntu crash package, build crash extensions, SPU has been + dropped (closes: #584119), lpia has been dropped (closes: #504522). + * Fix the -I include path sequence in the extensions/eppic.mk file to + prevent a series of "redefined" and "redeclaration" warnings when + compiling the EPPIC extension module. + * Address two compile-time warnings generated as a result of the + gdb*7.6.patch. Without the patch, there are "warning: no previous + prototype" warnings for gdb_main_entry() and replace_ui_file_FILE(). + * Implemented a new "mod -t" option that walks through the installed modules + and checks for non*zero values in each module's "taints" bitmask, and + translates the bits into symbolic letters if possible, or shows the + hexadecimal value of the bitmask if not. In older kernels, the + "license_gplok" field is checked, and if non*zero, its value is displayed + in hexadecimal. Lastly, if the "gpgsig_ok" member exists and is zero, a + "(U)" notation will also be displayed. + * Fixed compiler warnings generated by extensions/trace.c when compiled + with *DFORTIFY_SOURCE=2. Without the patch, the messages "warning: + ignoring return value of 'mktemp', declared with attribute + warn_unused_result", "warning: ignoring return value of 'fwrite', + declared with attribute warn_unused_result", and "warning: 'trace_dat' + may be used uninitialized in this function" are generated. + * Laid down the basic infrastructure for the ARM64 backtrace facility using + the kernel's arm64 unwind facility as a basis. Compile*tested only. + * Implemented the ARM64 virtual-to-physical kernel and user address + translation functions, supporting both 2*level page tables with 64K pages, + and 3*level page tables with 4K pages. Also added the associated PTE + translator function. Compile*tested only. + * Implemented the capability of building crash as an x86_64 binary for + analyzing ARM64 dumpfiles on an x86_64 host, which can be done by entering + "make target=ARM64". After the initial build is complete, subsequent + builds can be done by entering "make" alone. + * Added "aarch64" to the ExclusiveArch: line in the crash.spec file. + * Fix for the S390X "bt" command for Linux 3.10 and later kernels. Without + the patch, the starting stack location of the per*cpu async and panic + stacks of active tasks would be incorrectly determined. + + -- Troy Heber Tue, 18 Jun 2013 13:38:49 -0600 + +crash (7.0.0-1) unstable; urgency=low + + * Updated the embedded gdb version to FSF gdb-7.6, which was officially + released by the Free Software Foundation on http://www.gnu.org on 4/26/13. + The primary motivation for upgrading from gdb-7.3.1 is for future ARM64 + support, but there are also issues with respect to kernels built with + gcc-4.8.0. The relevant pieces of gdb-7.3.1.patch were forward-ported to + the gdb-7.6.patch, and the GDB_7_6 #define has been applied in the + top-level sources where appropriate. + + * Continued incremental steps for support of the ARM64 architecture. + + * Fix for the "struct name.member
" option if the "member" name is + also coincidentally a member of an embedded structure that is located + before the targeted member. Without the patch, the value of the embedded + structure's member is displayed instead of the targeted member. + + * Expose a heretofore unadvertised "kmem -[sS] -I slab[,slab]" option that + specifies one or more slab cache names in a comma-separated list that the + "kmem -[sS]" option should ignore. This can be helpful in cases where a + corrupted slab cache may never complete, or in very large memory systems + where one or more caches take an inordinate amount of time to complete. + + * Fix for the "kmem -i" option on Linux 3.9 and later kernels. Without the + patch, the "TOTAL SWAP", "SWAP USED" and "SWAP FREE" lines are not + displayed because the kernel's former "swapper_space" singular + address_space structure has has been changed into a "swapper_spaces" array + of address_space structures, with one for each swap partition. + + * Support for the PPC64 BOOK3E processor family, whose virtual memory + layout and PTE format are significantly different. Without the patch, the + crash session fails to initialize properly. (ataufer@us.ibm.com) + + * Fix for the PPC64 "sys", "mach" and initial system banner display of of + the processor speed in more recent kernels. Without the patch, the + "MACHINE" line in the initial banner and in the "sys" command display may + show "MACHINE: ppc64 (unknown Mhz)", and the "mach" command may show + "PROCESSOR SPEED: (unknown)". (anderson@redhat.com, ataufer@us.ibm.com) + + * Since the libgdb.a file no longer exists in gdb-7.6, the Makefile does not + check for it as a determining factor for whether a build has succeeded. + + * gdb-7.6 requires that the bfd library's "config.h" file be #include'd + before the "bfd.h" file by the top-level symbols.c file. + + * gdb-7.6 has replaced/moved the gnu_debuglink_crc32() utility function to + bfd_calc_gnu_debuglink_crc32(); the call in symbols.c has been configured + based upon the gdb version. + + * gdb-7.6 has reworked its do_cleanups() functionality, which requires the + gdb_error_hook() function to pass all_cleanups() as an argument. + + * gdb-7.6 causes the anon_member_offset() function to fail due to a change + in the output string; the function has been changed to work with both old + and new gdb versions. + + * gdb-7.6 required changes to vm_stat_init() and vm_event_state_init() + functions because enum lists get displayed differently on the S390X and + PPC64 architectures, which in turn caused failures of "kmem -i", "kmem -z" + and "kmem -V" on those two machine types. + + * Adjusted the alignment of the "kmem -V" and "kmem -z" display of the items + in the vm_stat[] array based upon the longest enumerator name string. + + * Adjusted the alignment of the "kmem -V" display of the cumulative totals + of the per-cpu "vm_event_states" items based upon the longest enumerator + name string. + + * Modified the top-level Makefile such that if the tar.gz file of the + configured gdb version does not exist in the build directory, try to wget + the file from http://ftp.gnu.org/gnu/gdb. This is normally not necessary + because the most recent gdb tar.gz file is bundled with the the crash + utility tar.gz and src.rpm files. However, it will allow the use of the + gdb-less crash.tar.gz file created via "make tar" to be copied to another + location, or perhaps copied to a git tree, and then built without + containing the the gdb tar.gz file. + + * Fix for the s390x.c file to handle a gcc-4.8.0 compiler warning when + building crash with "make warn", or compiler failures when building with + "make Warn" on an S390x machine. Without the patch, gcc-4.8.0 generates + the message "error: variable ‘psw_addr’ set but not used + [-Werror=unused-but-set-variable]". + + * Fixes for the s390dbf.c file to handle gcc-4.8.0 compiler warnings when + building crash with "make warn", or compiler failures when building with + "make Warn" on an S390X machine. Without the patch, gcc-4.8.0 generates + three "error: variable ‘’ set but not used + [-Werror=unused-but-set-variable]" messages. + + * Fix for an X86_64 warning message that gets displayed during session + initialization when running against Linux 3.9 kernels that were compiled + with gcc-4.8.0. Without the patch, the warning message "crash: cannot + determine thread return address" is displayed prior to the system + information. + + * Fix for lack of kernel text line number information by the "dis -l" and + "sym " options on Linux 3.9 kernels that were + compiled with gcc-4.8.0. Without the patch, the line number information + for kernel text symbols of type "(T)" may not be able to be determined and + displayed. + + -- Troy Heber Mon, 13 May 2013 11:59:26 -0600 + +crash (6.1.6-1ubuntu2) saucy; urgency=low + + * Add a live autopkgtest to run crash on running kernel. + + -- Chris J Arges Tue, 27 Aug 2013 12:37:03 -0500 + +crash (6.1.6-1ubuntu1) saucy; urgency=low + + * Merge from Debian unstable. Remaining changes: + - debian/rules: Always build extensions and package them. + - debian/rules: Cleanup for extensions. + * Dropped ubuntu changes: + - SPU extension support. + * debian/control: Add armhf to build architectures. + + -- Stefan Bader Thu, 09 May 2013 16:47:06 +0200 + +crash (6.1.6-1) unstable; urgency=low + + * New upstream version 6.1.6 + + * Fix for a crash-6.1.5 regression that causes the "mount" command to fail + on kernel versions prior to Linux 3.3. Without the patch, the command + fails with the message "mount: invalid structure member offset: + mount_mnt_devname". + + -- Troy Heber Mon, 06 May 2013 11:20:38 -0600 + +crash (6.1.5-1) UNRELEASED; urgency=low + + * New upstream version 6.1.6 + + * Fix for the ARM "irq" command. Without the patch, on 2.6.34 and later + kernels configured with CONFIG_SPARSE_IRQ, the command fails with the + error message "irq: cannot determine number of IRQs". + + * Fix for a segmentation violation generated during invocation while parsing + a makedumpfile-created "flat-format" vmcore-incomplete file. Without the + patch, the crash session would display the error message "crash: unable to + seek dump file vmcore-incomplete", followed by a segmentation violation. + + * Fix for a segmentation violation generated by the "kmem -s" option when + encountering a corrupted array_cache structure that contains a bogus + "avail" count that is greater than the maximum legitimate limit value. + Without the patch, the "kmem -s" command would print a warning message + regarding the invalid array_cache, complete the command normally, and then + generate a segmentation violation when freeing buffers used by the + command. + + * Update to the "kmem -s" function to include the errors found in slab + structures to the display of total errors found when the command + completes. Without the patch, invalid list_head pointers, bad inuse + counters, and bad s_mem pointers were not added to the total number of + errors found. + + * Fix for "crash --osrelease " and "crash --log " when + run on an ARM compressed kdump with a crash binary that was built with + "make target=ARM" on an x86 or x86_64 host. Without the patch, if the + compressed kdump header version is 4 or 5, "crash --osrelease" fails with + the error message "crash: compressed kdump: cannot lseek dump vmcoreinfo" + followed by "unknown", and "crash --log" fails with the error message + "crash: : no VMCOREINFO section". + + * Enhancement to the "swap" command to display the swap_info_struct address + of each configured swap device. The output has been changed to display + the address in the first column, and the variable-length device name has + been moved to the last column. + + * Fix for the "kmem -[sS]" options on kernels that configured with both + CONFIG_SLUB and CONFIG_NODES_SHIFT, and that are running on hardware that + generates NUMA nodes that contain no memory. Without the patch, both + command options fail immediately with the message "kmem: invalid kernel + virtual address: 8 type: kmem_cache_node nr_partial". + + * Increment the PPC64 NR_CPUS maximum value from 1024 to 2048. + + * Strip the ".isra." and ".part." appendages to cloned text symbol names, + which seem to have been introduced by gcc-4.6.0. To keep them intact, a + "--no_strip" command line option has been added. + + * Patch to the internal gdb_get_datatype() function to return the typecode + and length of integer variables. + + * Fix for the "dev -d" option on Linux 3.6 and later kernels. Without the + patch the option fails with the message "dev: invalid structure member + offset: request_queue_rq". + + * Export the red/black tree utility functions rb_first(), rb_parent(), + rb_right(), rb_left(), rp_next() and rb_last(). Without the patch, they + are statically declared and only used by the "runq" command. + + * Implemented a new "timer -r" option that displays the hrtimer queues, + supporting all versions from Linux 2.6.16 to the present. + + * Fix for "kmem -s" on Linux 3.8 and later kernels that are configured with + CONFIG_SLAB. The kmem_cache.array[] length has been extended to store the + nodelist pointers, so the original method to determine the per-cpu array + limit can go out-of-range. Without the patch, during session + initialization there may be a message that indicates "crash: invalid + kernel virtual address:
type: array cache limit", followed by + "crash: unable to initialize kmem slab cache subsystem"; if those messages + do get shown, then "kmem -s" will subsequently fail during runtime with + the message "kmem: kmem cache slab subsystem not available". + + * Two Xen hypervisor fixes: (1) Fix console buffer content length + calculation: Function displaying console buffer always assumes its content + length equal to console buffer size. This is not true and sometimes it + sends garbage to the screen. This patch fixes this issue. (2) Improve + calculation of beginning of virtual address space: Xen changeset 26447 + (x86: re-introduce map_domain_page() et al) once again altered virtual + address space. The current algorithm calculating its start could not cope + with that change. New version establishes this value on the base of image + start address and is more generic. + + * Fix for the ARM "vtop" command when run on a module address. Without the + patch, the command fails with error message "vtop: ambiguous address: + (requires -u or -k)". + + * Add the "--active" command line option to the crash(8) man page and to the + "crash [-h|--help]" output. + + * Add the "--buildinfo" command line option to the crash(8) man page and to + the "crash [-h|--help]" output. + + * Remove the unadvertised and unnecessary "--data_debug" command line + option, given that it is the default setting. + + * Remove the unadvertised and obsolete "--no_namelist_gzip" command line + option. + + * Add the "-g [namelist]" command line option to the crash(8) man page and + to the "crash [-h|--help]" output. + + * Remove the unadvertised and never-implemented "--shadow_page_tables" + command line option. + + * Fix for the ARM "vtop" command when run on a user virtual address of the + panic task. Prior to Linux 3.3, the panic task's pgd gets overwritten + with a pgd that identity-maps the whole address space, and therefore crash + loses the capability of translating any user virtual address into its + original physical address. + + * Fix to prevent the ARM linker mapping symbols "$d" and "$a" from being + added to the list of symbols from kernel modules. Without the patch, the + two symbols would only be rejected from the base kernel's symbol list, but + would be added to the symbol list of individual kernel modules. + + * Fix for the X86_64 "bt" command to recognize that the kernel was built + with CONFIG_FRAME_POINTER on Linux 3.7 and later kernels that are + configured with CONFIG_FUNCTION_TRACER. In those kernels, the special + 4-byte NOP instruction that can be overwritten during runtime for dynamic + ftracing has been moved to the very beginning of each function, before the + function preamble. Without the patch, the test that checks the function + preamble to determine whether CONFIG_FRAME_POINTER was configured would + fail, which could potentially lead to less reliable backtraces. + + -- Troy Heber Mon, 06 May 2013 11:20:38 -0600 + +crash (6.1.4-1) UNRELEASED; urgency=low + + * New upstream version 6.1.4 + + * Fix for a crash-6.1.3 regression with respect to the loading of extension + modules. Because of the change that replaced the obsolete _init() and + _fini() functions with constructor and destructor functions, extension + modules may fail to load when the extension modules are built with older + compiler/linkers. The problem is due to the continued usage of the + -nostartfiles compiler option regardless whether the extension module has + replaced its _init() function with a constructor function; with older + compiler/linkers, the module may fail to load. The fix predetermines + whether an extension module still uses _init() or if it has been updated + to use a constructor function, and will use the -nostartfiles option only + on older "legacy" modules. + + * Implemented a new "list -r" option that can be used with lists that are + linked with list_head structures. When invoked, the command will traverse + the linked list in the reverse order by using the "prev" pointer instead + of "next". + + * Fix for the "swap" command's FILENAME display. In some kernels between + 2.6.32 and 2.6.38 the swap partition's pathname may not show the "/dev" + filename component. + + * Fix for the "swap" command's PCT display, which will display a a negative + percentage value if more than 5368709 swap pages are in use. + + -- Troy Heber Mon, 06 May 2013 11:20:38 -0600 + +crash (6.1.3-1) unstable; urgency=low + + * New upstream version 6.1.3 + + * Implemented a new "crash --log dumpfile" option which dumps the + kernel log buffer and exits. A kernel namelist is not required, + but the dumpfile must contain the VMCOREINFO data from the ELF + header of the original /proc/vmcore file that was created by the + kexec/kdump facility. Accordingly, this option supports kdump ELF + vmcores and compressed kdump vmcores created by the makedumpfile + facility, including those that are in makedumpfile's intermediary + "vmcore.flat" format. + + * Fixes for the ppc64.c file to handle gcc-4.7.2 compiler warnings when + building crash with "make warn", or compiler failures when building + with "make Warn" on a PPC64 machine. Without the patch, gcc-4.7.2 + generates three "error: variable ‘’ set but not used + [-Werror=unused-but-set-variable]" messages. + + * Update the PPC64 architecure's internal storage of the kernel's + MAX_PHYSMEM_BITS value for Linux 3.7 and later kernels, which changed + from 44 to 46 to for 64TB support. Without the patch, there is no + known issue, but the stored value should be correct. + + * Fix for the "mount" command's header display to indicate "MOUNT" + instead of "VFSMOUNT" on Linux 3.3 and later kernels because the + the first column contains a mount structure address instead of a + vfsmount structure address. For those later kernels, it is + permissable to enter either the mount structure address, or the + address of the vfsmount structure that is embedded within it, as + an optional argument. The output has also been tightened up so + that the DIRNAME field is not shifted to the right based upon the + DEVNAME field length. + + * Fix for the "mount " search option on 2.6.32 and later + kernels. Without the patch, it is possible that multiple filesystems + will be displayed. + + * Update to the "mount" help page to indicate that a dentry address + may be used as a search option. + + * Fix for the "ps -l [pid|task|command]" option to display the + specified tasks sorted with the most recently-run task (the largest + last_run/timestamp) shown first, as is done with the "ps -l" option + with no arguments. Without the patch, the timestamp data gets + displayed in the order of the "[pid|task|command]" arguments. + + * Added the "ps" command to the set of supported "foreach" commands, + serving as an alternative manner of passing task-identifying + arguments to the "ps" command. For example, a command such as + "foreach RU ps" can be accomplished without having to pipe normal + "ps" output to "grep RU". All "ps" options are supported from the + "foreach" framework. + + * Fix for the "ps -G" restrictor option such that it also takes affect + if the -p, -c, -l, -a, -r or -g options are used. Without the + patch, thread group filtering would only take effect when the default + "ps" command is used without any of the options above. + + * Fortify the internal hq_open() function to return FALSE if it is + already open, and have restore_sanity() and restore_ifile_sanity() + call hq_close() unconditionally. + + * Added the "extend" command to the set of built-in commands that + support minimal mode. A new MINIMAL flag has been created for + extension modules to set in their command_table_entry.flags field(s) + to signal that a command supports minimal mode. If the crash session + has been invoked with --minimal, then the "extend" command will + require that the module registers at least one command that has + the MINIMAL bit set. + + * Prevent the "__crc_*" symbols from being added to the the ARM kernel + symbol list. + + * Prevent the "PRRR" and "NMRR" absolute symbols from being added to + the ARM kernel symbol list. Without the patch, it allows an invalid + set of addresses to pass the check in the in_ksymbol_range() function. + + * Fix for the ppc.c file to handle a gcc-4.7.2 compiler warning when + building crash with "make warn", or compiler failures when building + with "make Warn" on a PPC machine. Without the patch, gcc-4.7.2 + generates the message "error: variable ‘dm’ set but not used + [-Werror=unused-but-set-variable]". + + * Workaround for the "crash --osrelease dumpfile" option to be able + to work with malformed ARM compressed kdump headers. ARM compressed + kdumps that indicate header version 3 may contain a malformed + kdump_sub_header structure with offset_vmcoreinfo and size_vmcoreinfo + fields offset by 4 bytes, and the actual vmcoreinfo data is not + preceded by its ELF note header and its "VMCOREINFO" string. This + workaround finds the vmcoreinfo data and patches the stored header's + offset_vmcoreinfo and size_vmcoreinfo values. Without the patch, the + "--osrelease dumpfile" command line option fails with the message + "crash: compressed kdump: cannot lseek dump vmcoreinfo", followed by + "unknown". + + * Fix for the "help -n" option on 32-bit compressed kdumps. Without + the patch, the offset_vmcoreinfo, offset_eraseinfo, and offset_note + fields of the kdump_sub_header have their upper 32-bits clipped off + when displayed. However, it should be harmless since the offset + values point into the first few pages of the dumpfile. + + * Update of the extensions/echo.c extension module example, and the + "extend" help page, to utilize a constructor function to call the + register_extension() function. The _init() and _fini() functions + have been designated as obsolete for usage by dlopen() and dlclose(). + The echo.c example module has been modified to contain echo_init() + and echo_fini() functions marked as __attribute__((constructor)) and + __attribute__((destructor)) respectively. + + * Updated extensions/dminfo.c, extensions/snap.c and extensions/trace.c + to replace their _init() and _fini() functions with constructor and + destructor functions. + + * Fix for the "bt" command on the PPC64 architecture when running + on Linux 3.7 kernel threads. Without the patch, some kernel threads + may fail to terminate on the final ".ret_from_kernel_thread" frame, + repeating that frame endlessly, because the stack linkage pointer + points back to itself instead of being NULL. + + -- Troy Heber Wed, 13 Feb 2013 09:28:40 -0700 + +crash (6.1.2-1) UNRELEASED; urgency=low + + * New upstream version 6.1.2 + + * Enhancement of the "task" command to display both the task_struct and the + thread_info structures of a task. The -R option accepts members of + either/both structure types. + + * Fix for the X86_64 "search" and "rd" commands due to this commit: + http://git.kernel.org/linus/027ef6c87853b0a9df53175063028edb4950d476 Upon + any attempt to read a page within the RAM region reserved for AMD GART on + a live system, the Linux 3.7rc1 commit above causes causes /dev/mem, + /proc/kcore and the /dev/crash drivers to spin forever, leading to a + kernel soft lockup. The RAM pages reserved for GART consist of 2MB large + pages whose _PAGE_PRESENT bits are turned off. Prior to the above commit, + a read() attempt on GART RAM would cause an unresolvable page fault, and + would harmlessly return an EFAULT. The commit above has changed + pmd_large() function such that it now returns TRUE if only _PAGE_PSE bit + is set in the PTE, whereas before it required both _PAGE_PSE and + _PAGE_PRESENT. So instead of just failing the read() system call with an + EFAULT, the page fault handling code now considers it a spurious TLB + fault, and the instruction is retried indefinitely. The crash utility + patch stores the GART physical memory range, and disallows any attempts to + read from it. + + * If an EPPIC_GIT_URL environment variable is defined, then the URL that it + points to is used as an alternative to the code.google.com git source + repository for the eppic.so extension module. However, the alternative + site is only accessed if code.google.com can first be pinged; this patch + removes that restriction. + + * Fix for the "files" command PATH display on kernels configured with + CONFIG_DEVTMPFS, when the vfsmount pointer in an file structure's "f_path" + member does not point to the root vfsmount required for reconstructing the + full file pathname. Without the patch, open files in /dev directory may + be truncated and not show the "/dev" filename component. + + * Enhancement to the "kmem -v" option on 2.6.28 and later kernels that + utilize the "vmap_area_list" list of mapped kernel virtual memory regions, + replacing the usage of the to-be-obsoleted "vmlist" list. In those + kernels, the output of the command will also show each vmap_area structure + address, in addition to its vm_struct address, memory range, and size. + + * Update to the exported do_rbtree() and do_rdtree() functions such that + they will return the number of items found in the targeted tree, similar + in nature to the do_list() function. The two functions have also been + fixed such that the VERBOSE flag is actually recognized, so that external + callers are able to gather the entries in a tree without having them + displayed. The calls to either function may be enclosed with hq_open() + and hq_close() so the that tree entries may be subsequently gathered by + retrieve_list() into a supplied buffer, as well as to recognize a + corrupted list with duplicate entries. + + * Fix for the "extend -u" option to prevent the usage of a member of a + free()'d extension_table structure. No command failure occurs, but rather + an inadvertent coding error. + + * Fix to allow error() to be called during an open_tmpfile() sequence prior + to close_tmpfile() being called. There are no crash functions that call + error() during an open_tmpfile() sequence, but there's no reason why it + cannot be done. Without the patch, the error message gets displayed on + stdout (as expected), but the error message will also overwrite/corrupt + the tmpfile() data while it is being parsed. + + * Fix to properly determine whether X86_64 kernels were configured with + CONFIG_FRAME_POINTER, due to this ftrace-related commit: + http://git.kernel.org/linus/d57c5d51a30152f3175d2344cb6395f08bf8ee0c + Without the patch, the crash utility fails to determine whether the kernel + was built with CONFIG_FRAME_POINTER, and therefore the "bt" command cannot + take advantage of it for more reliable backtraces. + + * Fix to properly determine whether 2.6.31 and earlier X86_64 kernels were + configured with CONFIG_FRAME_POINTER. Without the patch, the crash + utility may fail to determine whether the kernel was built with + CONFIG_FRAME_POINTER. In those kernel versions -- which may be dependent + upon the compiler version used -- one of the sample functions tested may + have their "push %rbp, mov %rsp,%rbp" function preamble separated by other + instruction(s), resulting in a false negative that precludes the "bt" + command from taking advantage of framepointers. + + * Fix for the file and line-number string that is displayed by the "sym + " option. Without the patch, the "/usr/src/" part of the + string is stripped, and the filename string itself could have two + corrupted characters in the pathname, for example, showing + "k3.nel-3.6.fc17" instead of "kernel-3.6.fc17". This is dependent upon + the compiler version, or perhaps the string library that is linked into + the crash binary, because it only has been seen on crash binaries built + with gcc-4.7. The fix now displays the full pathname, no longer dropping + the "/usr/src" from beginning. + + * Restricted the X86_64 "line_number_hook" to kernels earlier than 2.6.24, + i.e., kernels prior to the x86/x86_64 merge. Without the patch, the + manufactured filename information for assembly-language files was + incorrect for 2.6.24 and later kernels. Also, the kernel debuginfo data + now has file/line-number data for assembly-language files as well, + obviating the need for the hook. + + * Fix for the extensions/trace.c extension module to prevent a double free + exception that would occur if a calloc() call fails during module + initialization. + + * Fix for the "p -u" option if a 32-bit kernel symbol is incorrectly passed + as an argument. Without the patch, the command fails, but the next + command requiring the services of the embedded gdb module will generate an + error message of the sort "*** glibc detected *** crash: free(): invalid + pointer:
***", or "*** glibc detected *** crash: munmap_chunk(): + invalid pointer:
***", followed by a backtrace, and an abort of + the crash session. + + * Fix for the embedded gdb module to correctly handle kernel modules whose + ELF header contains "__ksymtab" and "__ksymtab_gpl" sections with non-zero + nonsensical "Address" values. + + * Without the patch, if one of the odd sections above is encountered, the + "Offset" values of the remaining sections are not processed; and if the + module's .data section is ignored, gdb incorrectly calculates the address + of all symbols in the module's .data section, leading to incorrect output + if, for example, data is printed with the gdb "p" command. This invalid + ELF section format was introduced in Linux 3.0 by the kernel's + "scripts/module-common.lds" file. + + * Fix for the "runq -g" option if the kernel contains more than 200 task + groups. Without the patch, the command generates a segmentation + violation. + + -- Troy Heber Wed, 13 Feb 2013 09:28:40 -0700 + +crash (6.1.1-1) UNRELEASED; urgency=low + + * New upstream version 6.1.1 + + * Fixes for the ARM "vtop" command display of kernel unity-mapped virtual + addresses. Without the patch, the PGD, PMD values may be incorrect, and + the PAGE value is always incorrectly calculated. + + * Fix for Linux 2.6.34 and later kernels that are configured with + CONFIG_SLUB, but not configured with CONFIG_IKCONFIG, to be able to + determine the kernel's CONFIG_NR_CPUS value. Without the patch, if the + actual number of cpus is larger than the crash utility's per-architecture + NR_CPUS maximum value, then the cpus beyond the NR_CPUS limit would not be + accounted for. + + * Increment the X86_64 NR_CPUS maximum value from 4096 to 5120. + + * Try to determine whether the kernel is running as a virtual machine by + using any available kernel-specific data or by dumpfile type. The results + of the hypervisor type search will be stored in the internal kernel_table + data structure, and if a hypervisor type can be determined, its name will + be displayed by the "mach" command. The result of the hypervisor + determination, successful or otherwise, may be viewed during session + initialization if the -d command line option is invoked, or during + runtime via the "help -k" option. Only applicable to the X86, X86_64 and + IA64 architectures. + + * Allow the "ps command" and "foreach name" command options to contain more + than the kernel's maximum of 15 characters that are stored in each task's + task_struct.comm[] array. Without the patch, the two string arguments + were required to be the possibly-truncated command name string in order to + match. + + * Enhancement to the "ps" command to allow any of the "command" arguments to + be POSIX extended regular expressions. The expression string must be + encompassed by "'" characters, and will be matched against the names of + all tasks. + + * Add support for 2GB pages in the S390X virtual-to-physical address + translation function. Required for the new IBM zEC12 Mainframe. + + * Initial preparation for support of the ARM64 architecture. + + * Fix for the "log" command if a kernel message contains either a '\n' or a + '\t'. Without the patch, the two characters are replaced with a '.', and + the message continues. With the patch applied, the characters are + printed, and if it is a '\n', spaces are inserted after the linefeed so + that the subsequent characters in the message line up appropriately under + the preceding line. + + * Fix for the "kmem -[sS]" options on kernels that configured with both + CONFIG_SLUB and CONFIG_NODES_SHIFT, and that are running on hardware that + generates NUMA node ids that are not numbered consecutively. Without the + patch, both command options fail with the error message "kmem: invalid + kernel virtual address: 8 type: kmem_cache_node nr_partial". + + * Fix for the "trace.so" extension module's "trace show" command. Without + the patch, the output showing each trace point is shown with two + hexadecimal virtual addresses instead of displaying them symbolically + using the format " <-- ". + + * Fixes for handling incomplete/invalid ELF or compressed kdump vmcores + whose per-cpu NT_PRSTATUS notes are missing. For example, this has been + seen to happen when kexec/kdump incorrectly recognizes a Xen DomU kernel + as a Xen Dom0 kernel. Without the patch, possible ramifications would be + a NULL pointer dereference during session intialization when searching for + the panic task, or during the "bt" command on an active task. + + * Implemented a new "runq -g" option that displays CFS runqueue tasks + hierarchically by task_group. Tasks in throttled groups are also + displayed. The "runq" command with no option will no longer display + task_group data for the RT queue. + + * Patchset for Xen support up to version 4.2: + + * Fix for the S390X virtual-to-physical address translation to allow the HW + Change-bit override bit (0x100) to be used in page table entries. + + * Fix for a rarely-seen circumstance in which a kdump ELF vmcore of a Xen + dom0 kernel gets incorrectly identified as a old-style netdump ELF vmcore. + This has only been seen after the original kdump ELF vmcore was + transformed via "makedumpfile -d1". Without the patch, the crash session + fails during initialization with the messages "crash: invalid size + request: 0 type: xen kdump p2m mfn page", followed by "crash: cannot read + xen kdump p2m mfn page". If run against the Xen hypervisor, the session + fails during initialization with the error message "crash: read error: + kernel virtual address:
type: crashing_cpu". + + -- Troy Heber Wed, 13 Feb 2013 09:28:40 -0700 + +crash (6.1.0-1ubuntu2) raring; urgency=low + + * Make crash depend on binutils. (LP: #251288) + Crash uses the program strings to match vmlinux and cores. + + -- Chris J Arges Fri, 04 Jan 2013 17:26:06 -0600 + +crash (6.1.0-1ubuntu1) raring; urgency=low + + * Merge from Debian unstable (LP: #1064475). Remaining changes: + - debian/patches/01_spu_commands.patch + + Provides SPU extension support + + Enable SPU extension only on PPC (using .mk logic) + - debian/rules: + + Always build extensions and package them. + + Cleanup for extensions + + -- Stefan Bader Thu, 25 Oct 2012 16:29:52 +0200 + +crash (6.1.0-1) unstable; urgency=low + + * Fix for 32-bit SADUMP dumpfiles to correctly check whether a requested + physical address is within the 0-640K backup region. Without the patch, + requested physical addresses that are larger than 32-bits are truncated to + 32-bit values, leading to unexpected results. + + * Added support for the ELF dumpfile type that is generated by the new + "virsh dump --memory-only" option. The "--memory-only" option uses a new + "dump-guest-memory" QEMU monitor command that creates an ELF kdump vmcore + clone. The "virsh dump" command continues to borrow the "migrate" QEMU + monitor command to create a file that is designed for guest migration, and + not well-suited for a vmcore because it is not designed for random-access + of physical memory. A new "help -r" option has been added to dump the + registers that are stored in per-cpu "QEMU" ELF notes; those notes are + used to distinguish this dumpfile type from regular kdump ELF vmcores. + The patch also combines common functionality between the new format and + the SADUMP format. + + * Fix for the "runq" command for kernels that have the CFS scheduler. + Without the patch, a cpu's RT runqueue may incorrectly display "[no tasks + queued]" when in fact there are tasks on its queue. + + * In the highly-unlikely event that a pre-Linux 3.5 kernel's log buffer + cannot be read during initialization, display a message indicating + "WARNING: cannot read log_buf contents", and just continue. Without the + patch, a "readmem" error would be displayed and the crash session would be + killed. + + * Updated the "net -a" option to support Linux 2.6.9 to 3.6.0. Without the + patch, the option displayed "net: -a option not supported or applicable on + this architecture or kernel". + + * Enhanced the "net -a" option to show the struct neighbour address + associated with each line of output. + + * Fix for the "runq" command for kernels that are configured with + CONFIG_RT_GROUP_SCHED. Without the patch, tasks contained within an RT + group scheduling entity are not displayed. + + * Fix for "crash --version" or "crash -v" to prevent the sourcing of a + .gdbinit file that is located in the current directory. + + * Preemptive fix to handle this patch to the x86 devmem_is_allowed() + function that was posted on the Linux Kernel Mailing List here: + https://lkml.org/lkml/2012/8/28/357 If the proposed kernel patch put into + place, a failed attempt to use /dev/mem when the kernel is configured with + CONFIG_STRICT_DEVMEM will not result in an automatic attempt to use + /proc/kcore. With this crash utility patch, the automatic switch to + /proc/kcore will be attempted regardless whether the kernel patch is + accepted or not. + + * Patch for CVE-2012-3509: libiberty: objalloc_alloc integer overflows + + * Fix for Linux 3.0 and later kernels that have been configured with + CONFIG_SLAB, and without CONFIG_NODES_SHIFT (or have set it to 0). + Without the patch, the warning messages "crash: nr_node_ids: symbol does + not exist" and "crash: unable to initialize kmem slab cache subsystem" are + displayed during initialization, and the "kmem -[sS]" options fail with + the message "kmem: kmem cache slab subsystem not available". + + * Allow the build procedure to use an alternate compiler by passing "make + CC=" to the top-level Makefile. + + * Allow the user to append options to the "configure" script that is invoked + by the initial embedded gdb build procedure. The additional options + should be put in a file named "GDBFLAGS.extra" located in the top-level + directory. + + * Change for the "ps" command if a task is stopped due to the task being + traced by another task. Without the patch, the traced task is shown with + the "ST" (stopped) status; with the patch it will be shown with a "TR" + ncement of the "task" command to display both the task_struct and the + thread_info structures of a task. The -R option accepts members of + either/both structure types. + * The "TR" state has been added to the "foreach" command's list of task + state qualifiers. Without the patch, there is no way to filter out tasks + that are stopped due to being traced by another task. + + * Fix for passing a a "gdb" command to a crash session via a pipe if there + are any spaces preceding the "gdb" command name in the string. Without + the patch, the command will fail with the error message "gdb: gdb request + failed: ". + + * Preparation for the future S390/S390X structure name change from + "_lowcore" to "lowcore". The patch checks which structure is defined and + uses the correct name. + + * Replaced datatype_info() calls in do_radix_tree() and do_rdtree() with + preferred MEMBER_SIZE() macro. + + -- Troy Heber Tue, 23 Oct 2012 09:48:28 -0600 + +crash (6.0.9-1) UNRELEASED; urgency=low + + * Fix for building on host machines that have glibc-2.15.90 installed, in + which case the glibc header file /usr/include/bits/siginfo.h no longer + declares a "struct siginfo", but only the "siginfo_t" typedef. Without + the patch, the build of the embedded gdb module fails with the error + message "linux-nat.h:63:18: error: field 'siginfo' has incomplete type". + + * Add support for reading compressed kdump dumpfiles that were compressed by + the snappy compressor. This feature is disabled by default. To enable + this feature, build the crash utility in the following manner: (1) Install + the snappy libraries by using the host system's package manager or by + directly downloading libraries from author's website. The packages + required are: - snappy - snappy-devel The author's website is: + http://code.google.com/p/snappy (2) Create a CFLAGS.extra file and an + LDFLAGS.extra file in top-level crash sources directory: - enter -DSNAPPY + in the CFLAGS.extra file - enter -lsnappy in the LDFLAGS.extra file. (3) + Build crash with "make" as always. + + * Prevent the "ptov" command from returning an invalid virtual address on + 32-bit architectures. Without the patch, the command may result in an + invalid virtual address if the physical address entered cannot be accessed + by a unity-mapped kernel virtual address. The patch verifies that the + calculated virtual address can be translated back into the supplied + physical address. + + * Fix to automatically try /proc/kcore as an alternative live memory source + when the /dev/crash driver does not exist and /dev/mem is unusable because + the kernel was configured with CONFIG_STRICT_DEVMEM. Without the patch, + the automatic switch from /dev/mem to /proc/kcore is only attempted on the + X86 and X86_64 architectures. + + * Added missing linefeeds to several error messages in makedumpfile.c. + + * Fix for a regression introduced by a crash-5.1.1 patch that reworked the + handling of "set" commands that are put in .crashrc files, such that only + certain command options would get resolved before the crash session is + initialized. Without this patch, the "--less", "--more", "--no_scroll" + and "--CRASHPAGER" crash command line options do not properly override + conflicting "set scroll