[Crash-utility] Re: crash and sles 9 dumps
Dave Anderson
anderson at redhat.com
Mon Aug 20 19:49:47 UTC 2007
Michael Holzheu wrote:
> Hi Cliff
>
> On Mon, 2007-08-13 at 11:33 -0500, Cliff Wickman wrote:
>
>>On Fri, Aug 10, 2007 at 05:19:10PM +0200, Bernhard Walle wrote:
>
>
>>The kerntypes file that crash can use is built by the LKCD dwarfexract
>>command. Types are extracted from a -g kernel and modules. And dwarfextract
>>writes a magic ELF e_version that crash uses to distinguish a kerntypes from
>>a vmlinux. So only such a kerntypes file will work.
>
>
> Also the standard -g compiled lkcd Kerntypes file seems to work, if you
> set the KERNTYPES flag. This can be useful, if you don't want to build a
> full -g compiled vmlinux.
>
> I used the following simple patch which adds the "-k" option to force
> crash using the kerntypes code path.
>
> diff -Naurp crash-4.0-4.5/main.c crash-4.0-4.5-kerntypes/main.c
> --- crash-4.0-4.5/main.c 2007-08-13 15:07:20.000000000 +0200
> +++ crash-4.0-4.5-kerntypes/main.c 2007-08-13 15:06:51.000000000 +0200
> @@ -70,7 +70,7 @@ main(int argc, char **argv)
> */
> opterr = 0;
> optind = 0;
> - while((c = getopt_long(argc, argv, "Lgh::e:i:sSvc:d:tfp:m:",
> + while((c = getopt_long(argc, argv, "Lkgh::e:i:sSvc:d:tfp:m:",
> long_options, &option_index)) != -1) {
> switch (c)
> {
> @@ -222,6 +222,9 @@ main(int argc, char **argv)
> else
> program_usage(LONG_FORM);
> clean_exit(0);
> + case 'k':
> + pc->flags |= KERNTYPES;
> + break;
>
> case 'e':
> if (STREQ(optarg, "vi"))
>
>
This simple "-k" fix looks fine to me, presuming that there's
nothing else obvious in the lkcd kerntypes file that distinguishes
it -- i.e., like the unique ELF e_version that dwarfextract uses.
(EV_DWARFEXTRACT 101010101)
So unless anybody objects, or has a better idea, I'll put this -k
option in the next release.
Thanks,
Dave
> I attached the kerntypes file, which works for s390:
>
>
>
>
>
> ------------------------------------------------------------------------
>
> /*
> * kerntypes.c
> *
> * Dummy module that includes headers for all kernel types of interest.
> * The kernel type information is used by the lcrash utility when
> * analyzing system crash dumps or the live system. Using the type
> * information for the running system, rather than kernel header files,
> * makes for a more flexible and robust analysis tool.
> *
> * This source code is released under the GNU GPL.
> */
>
> /* generate version for this file */
> typedef char *COMPILE_VERSION;
>
> /* General linux types */
>
> #include <linux/autoconf.h>
> #include <linux/compile.h>
> #include <linux/utsname.h>
> #include <linux/module.h>
> #include <linux/sched.h>
> #include <linux/mm.h>
> #include <linux/slab_def.h>
> #include <linux/slab.h>
> #include <linux/bio.h>
> #include <linux/bitmap.h>
> #include <linux/bitops.h>
> #include <linux/bitrev.h>
> #include <linux/blkdev.h>
> #include <linux/blkpg.h>
> #include <linux/bootmem.h>
> #include <linux/buffer_head.h>
> #include <linux/cache.h>
> #include <linux/cdev.h>
> #include <linux/cpu.h>
> #include <linux/cpumask.h>
> #include <linux/cpuset.h>
> #include <linux/dcache.h>
> #include <linux/debugfs.h>
> #include <linux/elevator.h>
> #include <linux/fd.h>
> #include <linux/file.h>
> #include <linux/fs.h>
> #include <linux/futex.h>
> #include <linux/genhd.h>
> #include <linux/highmem.h>
> #include <linux/if.h>
> #include <linux/if_addr.h>
> #include <linux/if_arp.h>
> #include <linux/if_bonding.h>
> #include <linux/if_ether.h>
> #include <linux/if_tr.h>
> #include <linux/if_tun.h>
> #include <linux/if_vlan.h>
> #include <linux/in.h>
> #include <linux/in6.h>
> #include <linux/in_route.h>
> #include <linux/inet.h>
> #include <linux/inet_diag.h>
> #include <linux/inetdevice.h>
> #include <linux/init.h>
> #include <linux/initrd.h>
> #include <linux/inotify.h>
> #include <linux/interrupt.h>
> #include <linux/ioctl.h>
> #include <linux/ip.h>
> #include <linux/ipsec.h>
> #include <linux/ipv6.h>
> #include <linux/ipv6_route.h>
> #include <linux/irq.h>
> #include <linux/irqflags.h>
> #include <linux/irqreturn.h>
> #include <linux/jbd.h>
> #include <linux/jbd2.h>
> #include <linux/jffs2.h>
> #include <linux/jhash.h>
> #include <linux/jiffies.h>
> #include <linux/kallsyms.h>
> #include <linux/kernel.h>
> #include <linux/kernel_stat.h>
> #include <linux/kexec.h>
> #include <linux/kobject.h>
> #include <linux/kthread.h>
> #include <linux/ktime.h>
> #include <linux/list.h>
> #include <linux/memory.h>
> #include <linux/miscdevice.h>
> #include <linux/mm.h>
> #include <linux/mm_inline.h>
> #include <linux/mm_types.h>
> #include <linux/mman.h>
> #include <linux/mmtimer.h>
> #include <linux/mmzone.h>
> #include <linux/mnt_namespace.h>
> #include <linux/module.h>
> #include <linux/moduleloader.h>
> #include <linux/moduleparam.h>
> #include <linux/mount.h>
> #include <linux/mpage.h>
> #include <linux/mqueue.h>
> #include <linux/mtio.h>
> #include <linux/mutex.h>
> #include <linux/namei.h>
> #include <linux/neighbour.h>
> #include <linux/net.h>
> #include <linux/netdevice.h>
> #include <linux/netfilter.h>
> #include <linux/netfilter_arp.h>
> #include <linux/netfilter_bridge.h>
> #include <linux/netfilter_decnet.h>
> #include <linux/netfilter_ipv4.h>
> #include <linux/netfilter_ipv6.h>
> #include <linux/netlink.h>
> #include <linux/netpoll.h>
> #include <linux/pagemap.h>
> #include <linux/param.h>
> #include <linux/percpu.h>
> #include <linux/percpu_counter.h>
> #include <linux/pfn.h>
> #include <linux/pid.h>
> #include <linux/pid_namespace.h>
> #include <linux/poll.h>
> #include <linux/posix-timers.h>
> #include <linux/posix_acl.h>
> #include <linux/posix_acl_xattr.h>
> #include <linux/posix_types.h>
> #include <linux/preempt.h>
> #include <linux/prio_tree.h>
> #include <linux/proc_fs.h>
> #include <linux/profile.h>
> #include <linux/ptrace.h>
> #include <linux/radix-tree.h>
> #include <linux/ramfs.h>
> #include <linux/raw.h>
> #include <linux/rbtree.h>
> #include <linux/rcupdate.h>
> #include <linux/reboot.h>
> #include <linux/relay.h>
> #include <linux/resource.h>
> #include <linux/romfs_fs.h>
> #include <linux/root_dev.h>
> #include <linux/route.h>
> #include <linux/rwsem.h>
> #include <linux/sched.h>
> #include <linux/sem.h>
> #include <linux/seq_file.h>
> #include <linux/seqlock.h>
> #include <linux/shm.h>
> #include <linux/shmem_fs.h>
> #include <linux/signal.h>
> #include <linux/signalfd.h>
> #include <linux/skbuff.h>
> #include <linux/smp.h>
> #include <linux/smp_lock.h>
> #include <linux/socket.h>
> #include <linux/sockios.h>
> #include <linux/spinlock.h>
> #include <linux/stat.h>
> #include <linux/statfs.h>
> #include <linux/stddef.h>
> #include <linux/swap.h>
> #include <linux/swapops.h>
> #include <linux/sys.h>
> #include <linux/syscalls.h>
> #include <linux/sysctl.h>
> #include <linux/sysdev.h>
> #include <linux/sysfs.h>
> #include <linux/sysrq.h>
> #include <linux/tc.h>
> #include <linux/tcp.h>
> #include <linux/thread_info.h>
> #include <linux/threads.h>
> #include <linux/tick.h>
> #include <linux/time.h>
> #include <linux/timer.h>
> #include <linux/timerfd.h>
> #include <linux/times.h>
> #include <linux/timex.h>
> #include <linux/topology.h>
> #include <linux/transport_class.h>
> #include <linux/tty.h>
> #include <linux/tty_driver.h>
> #include <linux/tty_flip.h>
> #include <linux/tty_ldisc.h>
> #include <linux/types.h>
> #include <linux/uaccess.h>
> #include <linux/unistd.h>
> #include <linux/utime.h>
> #include <linux/uts.h>
> #include <linux/utsname.h>
> #include <linux/utsrelease.h>
> #include <linux/version.h>
> #include <linux/vfs.h>
> #include <linux/vmalloc.h>
> #include <linux/vmstat.h>
> #include <linux/wait.h>
> #include <linux/watchdog.h>
> #include <linux/workqueue.h>
> #include <linux/zconf.h>
> #include <linux/zlib.h>
>
> /*
> * s390 specific includes
> */
>
> #include <asm/lowcore.h>
> #include <asm/debug.h>
> #include <asm/ccwdev.h>
> #include <asm/ccwgroup.h>
> #include <asm/qdio.h>
> #include <asm/zcrypt.h>
> #include <asm/etr.h>
> #include <asm/ipl.h>
> #include <asm/setup.h>
>
> /* channel subsystem driver */
> #include "drivers/s390/cio/cio.h"
> #include "drivers/s390/cio/chsc.h"
> #include "drivers/s390/cio/css.h"
> #include "drivers/s390/cio/device.h"
> #include "drivers/s390/cio/qdio.h"
>
> /* dasd device driver */
> #include "drivers/s390/block/dasd_int.h"
> #include "drivers/s390/block/dasd_diag.h"
> #include "drivers/s390/block/dasd_eckd.h"
> #include "drivers/s390/block/dasd_fba.h"
>
> /* networking drivers */
> #include "drivers/s390/net/fsm.h"
> #include "include/net/iucv/iucv.h"
> #include "drivers/s390/net/lcs.h"
> #include "drivers/s390/net/qeth.h"
>
> /* zfcp device driver */
> #include "drivers/s390/scsi/zfcp_def.h"
> #include "drivers/s390/scsi/zfcp_fsf.h"
>
> /* crypto device driver */
> #include "drivers/s390/crypto/ap_bus.h"
> #include "drivers/s390/crypto/zcrypt_api.h"
> #include "drivers/s390/crypto/zcrypt_cca_key.h"
> #include "drivers/s390/crypto/zcrypt_pcica.h"
> #include "drivers/s390/crypto/zcrypt_pcicc.h"
> #include "drivers/s390/crypto/zcrypt_pcixcc.h"
> #include "drivers/s390/crypto/zcrypt_cex2a.h"
>
> /* sclp device driver */
> #include "drivers/s390/char/sclp.h"
> #include "drivers/s390/char/sclp_rw.h"
> #include "drivers/s390/char/sclp_tty.h"
>
> /* vmur device driver */
> #include "drivers/s390/char/vmur.h"
>
> /*
> * include sched.c for types:
> * - struct prio_array
> * - struct runqueue
> */
> #include "kernel/sched.c"
> /*
> * include slab.c for struct kmem_cache
> */
> #include "mm/slab.c"
>
>
> ------------------------------------------------------------------------
>
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
More information about the Crash-utility
mailing list