- Added the /dev/crash memory driver Makefile and source file to the crash package for live system analysis when the target system's kernel was configured with CONFIG_STRICT_DEVMEM, or was not configured with CONFIG_PROC_KCORE, or whose /proc/kcore is simply not functional. The driver can be built and installed by entering the memory_driver subdirectory and entering "make", and then "insmod crash.ko". If the module is successfully installed, it will be used by default for live crash sessions. (anderson@xxxxxxxxxx) - Fix for the "extend -u" command option. Without the patch, after the successful unloading of a crash extension module, there may be an invalid error message that indicates "extend: <module>.so and <module>.so are different". (anderson@xxxxxxxxxx) - Implement support for Xen version 4 hypervisor dumpfiles: 1. Accept the "__per_cpu_shift" symbol. Without the patch, crash initialization fails on X86, X86_64 and IA64 dumpfiles. 2. Make the x86_64 XEN_VIRT_START value a variable dependent upon the Xen version. Without the patch, crash initialization fails on x86_64 dumpfiles. 3. In Xen version 4, "init_tss" is a per-cpu symbol. Without this patch, crash fails during initialization with the error message "crash: cannot resolve init_tss" on X86 and X86_64 dumpfiles. 4. Each domain can have a different number of max VCPUs in Xen version 4. Prepare for this by converting the static array into a dynamic one. 5. If the size of the vcpu array in struct domain is known, use it to size the dynamically allocated vcpu array in crash. This enables crash to initialize domains with a different number of VCPUs than specified by the XEN_HYPER_MAX_VIRT_CPUS macro. 6. The "vcpu" field changed from a fixed array to a pointer to an array. The size of the array is stored in the (newly introduced) "max_vcpus" field. Modify xen_hyper_store_domain_context() to account for this change. 7. The command line options (such as opt_sched) are discarded after boot in Xen version 4, so they are no longer available. Use the "ops" variable (if it exists) to determine the active scheduler. Without this patch, crash fails during initialization with the error message "crash: schedule data not found". (ptesarik@xxxxxxx) - Created a new extension module API: int load_module_symbols_helper(char *module); It takes a kernel module name as an argument, and performs the same procedure as the command "mod -s <module>". (nakayama.ts@xxxxxxxxxxxxxx, anderson@xxxxxxxxxx) - When loading debuginfo data for kernel module object files with the "mod" command or with the new load_module_symbols_helper() extension module API, search a non-standard directory path by specifying the directory tree in the CRASH_MODULE_PATH shell environment variable. (nakayama.ts@xxxxxxxxxxxxxx, anderson@xxxxxxxxxx) - Created a new extension module API: int get_kernel_config(char *conf_name, char **str); The kernel must be configured with CONFIG_IKCONFIG. It takes a kernel configuration item string, which may be of the format "CONFIG_XXX" or just "XXX", and a pointer to a char *. The function returns: IKCONFIG_Y: configuration item is built into the kernel IKCONFIG_M: configuration item is part of a kernel module IKCONFIG_STR: configuration item consists of a string IKCONFIG_N: the kernel is not configured with CONFIG_IKCONFIG or the configuration item is not configured. If "Y", "M" or "STR", the configuration item's string representation will be pointed to by the passed-in "str" pointer. (nakayama.ts@xxxxxxxxxxxxxx, anderson@xxxxxxxxxx) - Update of the "extensions/trace.c" extension module. Initially designed to support 2.6.32 (RHEL6), it has been updated to support kernels up to 2.6.38-rc1. (laijs@xxxxxxxxxxxxxx) - Fix for the internal parse_line() function to properly handle multiple string arguments. Without the patch, the second, fourth, etc., string argument would get broken up into individual tokens. (bob.montgomery@xxxxxx) - Updates to support ARM page table changes and PTE differences that were introduced in 2.6.38 kernels. Deleted two irrelevant ARM-only source code comments. (ext-mika.1.westerberg@xxxxxxxxx) - Removed two unused "struct syment" local variable declarations in the gdb_add_symbol_file() function in gdb-7.0/gdb/symtab.c. (ptesarik@xxxxxxx) - Replaced the usage of the VOID_PTR() macro with the ULONG() macro for structure member accesses in vm_area_dump(), vm_area_page_dump() and next_upage(). (ptesarik@xxxxxxx) - Implemented support for makedumpfile's "vmcore.flat" dumpfile format. It is no longer necessary to revert the flat dumpfile back into an ELF vmcore or compressed kdump vmcore with "makedumpfile -R", or with the "makedumpfile-R.pl" script. Without the patch, attempting to use a flat dumpfile fails with the message "crash: vmcore.flat: not a supported file format". (oomichi@xxxxxxxxxxxxxxxxx) - Moved the GDB_CONF_FLAGS logic from the Makefile into configure.c. (ptesarik@xxxxxxx) - Use memset() in the shift_string_right() utility function, and use shift_string_right() and memset() in the mkstring() utility function. (ptesarik@xxxxxxx) - Added a new "search -p" option to search physical memory. Until now only kernel virtual memory and user virtual memory of the current context could be searched. (anderson@xxxxxxxxxx) - Optimization of the "search -k" function resulting in a significant time reduction when cycling through vmalloc memory space. (anderson@xxxxxxxxxx) - Added a new "search -K" option, which searches a subset of kernel virtual memory, restricting the search to kernel unity-mapped virtual memory, and on the x86_64 and ia64 machines, their discretely mapped kernel-text/static-data regions. (anderson@xxxxxxxxxx) - Added a new "search -V" option, which searches a subset of kernel virtual memory, restricting the search to kernel virtual memory that was allocated by vmalloc(), kernel module memory, and the virtual mem_map region if it exists on x86_64, ia64, ppc64 and s390x machines. (anderson@xxxxxxxxxx) - Reworked the functionality of the "search" command to break up kernel virtual memory into machine-dependent address regions so that the cycling through disparate virtual address regions can be done in a more efficient manner. (anderson@xxxxxxxxxx) - Fix for "search -k" on x86_64. Early 2.6 kernels did not have their module virtual address space included in the kernel's "vmlist" array; without the patch, module memory is not searched. (anderson@xxxxxxxxxx) - Fix for "search -k" on x86_64. Without the patch, the kernel's mapped kernel text/static-data region is not searched as a separate region. (anderson@xxxxxxxxxx) - Fix for "search -k" on architectures that may have a virtual memmap, such as x86_64, ia64, ppc64 and s390x. Without the patch, virtual memmap array memory is not searched. (anderson@xxxxxxxxxx) - Fix for "search -k" on s390x. Without the patch, the command may end prematurely with the error message "search: read error: kernel virtual address: 0 type: entry". (anderson@xxxxxxxxxx) - Fix for "search" command to prevent unnecessary read error messages for memory pages that are not contained in a xendump dumpfile. Without the patch, the output may be interspersed with messages that indicate "search: cannot find mfn in page index". (anderson@xxxxxxxxxx) - Fix for a compile failure of the embedded gdb-7.0/bfd/verilog.c file due to a smarter -Werror flag used by gcc-4.6. (anderson@xxxxxxxxxx) Download from: http://people.redhat.com/anderson -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility