Hello community, here is the log from the commit of package crash for openSUSE:Factory checked in at Mon Jul 19 20:57:24 CEST 2010. -------- --- crash/crash.changes 2010-04-20 21:23:58.000000000 +0200 +++ /mounts/work_src_done/STABLE/crash/crash.changes 2010-07-14 17:21:11.000000000 +0200 @@ -1,0 +2,79 @@ +Wed Jul 14 13:12:19 UTC 2010 - ptesarik@novell.com + +- crash-compressed-booted-kernel: correctly find the booted kernel + even if compressed (bnc#581159). + +------------------------------------------------------------------- +Tue Jun 22 10:33:40 UTC 2010 - ptesarik@novell.com + +- Update to 5.0.5 + o Add "bt -F" flag: same as "bt -f" but symbolic expressions are + preferred (similar to "rd -S"). + o Fix for the %install stanza in the crash.spec file to check for + the existence of the sial.so extension module. + o Fix a confusing "foreach:" prefix in the error message + displayed by the "crash -x" command line option when the + pre-loading of an extension module fails. + o x86_64: Fix "bt" and "bt -E" if the kdump-generated NMI + interrupts a task that has just entered kernel space but has + not yet changed the RSP register to the kernel stack. + o x86: Fix "bt" if the crash occurs during the execution of a + kernel module's init_module() function. + o Fix "kmem -[sS]" on 2.6.34 and later CONFIG_SLUB kernels, which + changed the kmem_cache.cpu_slab[NR_CPUS] array to be a per-cpu + offset value. + o Show hexadecimal values in the "INDEX" colum of "kmem -p", + because because "page.index" is typically a shared-use field + that may also contain a pointer value. + o Fix "kmem <address>" if the kernel's free page lists are + corrupt, or in a state of flux, and cannot be followed. + o Support newer "virsh dump"-generated KVM formats that may + contain "block" and "kvmclock" devices in the dumpfile header. + o Support "virsh dump"-generated KVM dumpfiles of a RHEL5 guest + from a RHEL6 host, and to support dumpfile format changes + that contain "apic" and "__rhel5" devices. + o Fix a compiler warning when building gdb_interface.c with -O2. + o Fix compiler warnings when building net.c with -O2. + +------------------------------------------------------------------- +Mon Jun 21 16:17:01 UTC 2010 - ptesarik@novell.com + +- Update to 5.0.4 + o x86: Fix "bt" when a newly-forked task's resumption EIP value + points to "ret_from_fork". + o x86: Fix "bt" when an NMI interrupts a task early during system + call entry. + o x86_64: Fix "bt" on 2.6.29 and later to recognize and display + exception frames generated by exceptions that do not result in + a stack switch, such as general protection faults. + o ppc64: Account for an update to the kernel patch for + CONFIG_SPARSEMEM_VMEMMAP. + o Improve "dev -p" error message on 2.6.26 or later kernels, + which no longer have the "pci_devices" global variable. + o s390(x): Display "CPU offline" when doing a backtrace of the + "swapper" task on an offline CPU. + o x86_64: Fix per-cpu symbols on 2.6.34 and later kernels by + allowing them to be of type 'd' or 'D'. + o x86_64: Fix a segmentation violation during initialization in + x86_64_get_active_set(). + o Support KVM dumpfiles created with "virsh dump" that create + "cpu" header sections using a QEMU CPU_SAVE_VERSION version + greater than the supported version of 9. + o x86_64: Fix for KVM dumpfiles created with "virsh dump", whose + kernels have a "_text" virtual address higher than + __START_KERNEL_map. + o Add a "map" command for specifying the memory map of KVM guest + dumpfiles created with "virsh dump". + o x86_64: Correctly calculate the physical base address of a + fully-virtualized RHEL6 guest kernel running on a RHEL5 Xen + host. + o x86_64: Fix "bt" on inactive (blocked) tasks for 2.6.33 and + later kernels, which have the "thread_return" symbol removed + from the embedded "switch_to" macro. + o x86: Fix for "bt" on 2.6.33 and later kernels, which moved + the "system_call" symbol to the .kprobes.text section. + o Fix a segmentation violation in the "trace" extension module, + as seen when running "trace show -c <cpu>". + o Add a "trace dump -t" command for the "trace" extension module. + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- crash-5.0.3.tar.gz New: ---- crash-5.0.5.tar.gz crash-compressed-booted-kernel ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crash.spec ++++++ --- /var/tmp/diff_new_pack.wo3yzP/_old 2010-07-19 20:55:43.000000000 +0200 +++ /var/tmp/diff_new_pack.wo3yzP/_new 2010-07-19 20:55:43.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package crash (Version 5.0.3) +# spec file for package crash (Version 5.0.5) # # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -17,7 +17,7 @@ # norootforbuild -%define crash_version 5.0.3 +%define crash_version 5.0.5 %define whitepaper_version 2003 %define scripts_version 2008-02-08 @@ -46,6 +46,7 @@ Patch6: %{name}-crosscrash-hint.diff Patch7: %{name}-rl_digit_loop-return.patch Patch8: %{name}-missing-declarations.patch +Patch9: %{name}-compressed-booted-kernel Patch90: %{name}-sial-ps-2.6.29.diff BuildRequires: bison flex ncurses-devel zlib-devel Requires: /usr/bin/nm @@ -132,6 +133,7 @@ %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 ## SIAL patches cd sial-scripts-%{scripts_version} %patch90 -p1 ++++++ crash-5.0.3.tar.gz -> crash-5.0.5.tar.gz ++++++ crash/crash-5.0.3.tar.gz /mounts/work_src_done/STABLE/crash/crash-5.0.5.tar.gz differ: char 4, line 1 ++++++ crash-compressed-booted-kernel ++++++ --- defs.h | 2 ++ filesys.c | 45 +++++++++++++++++++++++++++++++++++---------- symbols.c | 27 +++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 10 deletions(-) --- a/filesys.c +++ b/filesys.c @@ -512,6 +512,8 @@ static int find_booted_kernel(void) { char kernel[BUFSIZE]; + char kernel_unpacked[PATH_MAX]; + char *realkernel; char buffer[BUFSIZE]; char **searchdirs; int i, preferred, wrapped; @@ -541,7 +543,8 @@ find_booted_kernel(void) searchdirs = build_searchdirs(CREATE, &preferred); - for (i = preferred, wrapped = found = FALSE; !found; i++) { + kernel_unpacked[0] = '\0'; + for (i = preferred, wrapped = found = FALSE; !found; i++) { if (!searchdirs[i]) { if (preferred && !wrapped) { wrapped = TRUE; @@ -561,18 +564,37 @@ find_booted_kernel(void) sprintf(kernel, "%s%s", searchdirs[i], dp->d_name); if (mount_point(kernel) || - !file_readable(kernel) || - !is_elf_file(kernel)) + !file_readable(kernel)) continue; + kernel_unpacked[0] = '\0'; + if (is_gzipped_elf_file(kernel)) { + realkernel = kernel_unpacked; + if (!uncompress_file(kernel, realkernel)) { + error(INFO, + "Uncompression failed for %s\n", + kernel); + } + } else + realkernel = kernel; + + if (!is_elf_file(realkernel)) { + if (kernel_unpacked[0]) + remove(kernel_unpacked); + continue; + } + if (CRASHDEBUG(1)) fprintf(fp, "find_booted_kernel: check: %s\n", kernel); - found = match_file_string(kernel, kt->proc_version, buffer); + found = match_file_string(realkernel, kt->proc_version, buffer); if (found) break; + + if (kernel_unpacked[0]) + remove(kernel_unpacked); } closedir(dirp); } @@ -581,20 +603,23 @@ find_booted_kernel(void) build_searchdirs(DESTROY, NULL); if (found) { - if ((pc->namelist = (char *)malloc - (strlen(kernel)+1)) == NULL) + if ((pc->orig_namelist = strdup(kernel)) == NULL) + error(FATAL, "booted kernel real name malloc: %s\n", + strerror(errno)); + else if ((pc->namelist = strdup(realkernel)) == NULL) { error(FATAL, "booted kernel name malloc: %s\n", strerror(errno)); - else { - strcpy(pc->namelist, kernel); + } else { if (CRASHDEBUG(1)) fprintf(fp, "find_booted_kernel: found: %s\n", - pc->namelist); - pc->orig_namelist = pc->namelist; + pc->orig_namelist); return TRUE; } } + if (kernel_unpacked[0]) + remove(kernel_unpacked); + error(INFO, "cannot find booted kernel -- please enter namelist argument\n\n"); return FALSE; --- a/defs.h +++ b/defs.h @@ -3417,6 +3417,8 @@ void dump_symbol_table(void); void dump_struct_table(ulong); void dump_offset_table(char *, ulong); int is_elf_file(char *); +int is_gzipped_elf_file(const char *file); +int uncompress_file(const char *file, char *new_file); int is_kernel(char *); int is_kernel_uncompress(char *file, char *new_filename); int is_shared_object(char *); --- a/symbols.c +++ b/symbols.c @@ -2643,6 +2643,33 @@ int is_gzip_file(const char *file) } /* + * Checks if the file is gzip-compressed and the compressed data contains + * the ELF magic number. + */ +int is_gzipped_elf_file(const char *file) +{ + gzFile f; + char magic[EI_NIDENT]; + + if (!is_gzip_file(file)) + return FALSE; + + if ((f = gzopen(file, "r")) == Z_NULL) { + error(INFO, "Cannot open %s: %s\n", file, strerror(errno)); + return FALSE; + } + if (gzread(f, magic, EI_NIDENT) != EI_NIDENT) { + /* error(INFO, "%s: %s\n", s, strerror(errno)); */ + gzclose(f); + return FALSE; + } + gzclose(f); + + magic[EI_CLASS] = NULLCHAR; + return(STREQ(magic, ELFMAG)); +} + +/* * Uncompresses the given file. Saves the name of the new file in new_file. * Size of new_file must be large enough for PATH_MAX characters. * ++++++ rpmlintrc ++++++ --- /var/tmp/diff_new_pack.wo3yzP/_old 2010-07-19 20:55:43.000000000 +0200 +++ /var/tmp/diff_new_pack.wo3yzP/_new 2010-07-19 20:55:43.000000000 +0200 @@ -1 +1,3 @@ addFilter("devel-file-in-non-devel-package .*/usr/share/sial/crash.*") +# crash-5.0.5.tar compresses better with gzip than with bzip2 +addFilter(" source-or-patch-not-compressed bz2 crash-5.0.5.tar.gz") ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org