[Crash-utility] compiling statically?

Dave Anderson anderson at redhat.com
Thu Aug 25 18:20:38 UTC 2016



----- Original Message -----
> On Thu, 2016-08-25 at 13:41 -0400, Dave Anderson wrote:
> > 
> > ----- Original Message -----
> > > 
> > > On Thu, 2016-08-25 at 09:45 -0700, J Freyensee wrote:
> > > > 
> > > > On Wed, 2016-08-24 at 20:30 -0400, Dave Anderson wrote:
> > > > > 
> > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > On Wed, 2016-08-24 at 15:00 -0400, Dave Anderson wrote:
> > > > > > 
> > > > > > That's not a problem -- crash just needs to be compiled with
> > > > > > "make
> > > > > > lzo",
> > > > > > which will add these lines to the CFLAGS.extra and
> > > > > > LDFLAGS.extra
> > > > > > files:
> > > > > > 
> > > > > >   -DLZO     in the CFLAGS.extra file
> > > > > >   -llzo2    in the LDFLAGS.extra file
> > > > > > 
> > > > > > and will delete diskdump.o.  The subsequent rebuild will
> > > > > > recompile
> > > > > > diskdump.c with lzo compression support.  You only have to
> > > > > > enter
> > > > > > "make lzo" once, as it's effect is sticky.
> > > > 
> > > > Thanks, this helped.
> > > > 
> > > > > 
> > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > This also requires the lzo, lzo-minilzo and lzo-devel
> > > > > > packages to
> > > > > > be installed so that the lzo compression library can get
> > > > > > compiled
> > > > > > in.
> > > > > > But in your case, you would need to have the static versions
> > > > > > of
> > > > > > the
> > > > > > lzo and lzo-minilzo packages.
> > > > > 
> > > > > Although -- unlike the zlib package which has a zlib-static rpm
> > > > > --
> > > > > the
> > > > > Red Hat lzo package set does not include static versions of the
> > > > > lzo
> > > > > and
> > > > > lzo-minilzo libraries.  So I don't know how you can get around
> > > > > that.
> > > > > 
> > > > 
> > > > I got around the liblzo2.a issue by just building from the
> > > > sources:
> > > > 
> > > > mkdir lzo2_temp
> > > > cd lzo2_temp/
> > > > yumdownloader --source lzo-devel
> > > > pm2cpio lzo-2.08-8.fc24.src.rpm | cpio -idv
> > > > tar xf lzo-2.08.tar.gz
> > > > cd lzo-2.08/
> > > > run ./configure if need-be
> > > > make liblzo2.a
> > > > 
> > > > Looks like all I need is liblzo2.a.  Seems like a simple thing
> > > > for
> > > > the
> > > > .rpm package to include since it's already been designed into the
> > > > Makefile in the src.rpm.
> > > > 
> > > > Anyways, I think I may have it working now, despite the same
> > > > compiler
> > > > warnings I mentioned at the beginning??:
> > > > 
> > > > [~]$ ./crash src/linux/vmlinux crash.dump
> > > > 
> > > > crash 7.1.5
> > > > Copyright (C) 2002-2016  Red Hat, Inc.
> > > > Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
> > > > Copyright (C) 1999-2006  Hewlett-Packard Co
> > > > Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
> > > > Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
> > > > Copyright (C) 2005, 2011  NEC Corporation
> > > > Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
> > > > Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux,
> > > > Inc.
> > > > This program is free software, covered by the GNU General Public
> > > > License,
> > > > and you are welcome to change it and/or distribute copies of it
> > > > under
> > > > certain conditions.  Enter "help copying" to see the conditions.
> > > > This program has absolutely no warranty.  Enter "help warranty"
> > > > for
> > > > details.
> > > >  
> > > > GNU gdb (GDB) 7.6
> > > > Copyright (C) 2013 Free Software Foundation, Inc.
> > > > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licens
> > > > es/g
> > > > pl
> > > > .html>
> > > > This is free software: you are free to change and redistribute
> > > > it.
> > > > There is NO WARRANTY, to the extent permitted by law.  Type "show
> > > > copying"
> > > > and "show warranty" for details.
> > > > This GDB was configured as "x86_64-unknown-linux-gnu"...
> > > > 
> > > > crash: failed to read pageflag_names entry
> > > >       KERNEL: src/linux/vmlinux
> > > >     DUMPFILE: crash.dump  [PARTIAL DUMP]
> > > >         CPUS: 8
> > > >         DATE: Tue Aug 23 15:12:26 2016
> > > >       UPTIME: 00:04:26
> > > > LOAD AVERAGE: 0.20, 0.29, 0.13
> > > >        TASKS: 300
> > > >     NODENAME: nvmf-host03.jf.intel.com
> > > >      RELEASE: 4.8.0-rc3
> > > >      VERSION: #1 SMP Tue Aug 23 12:22:39 PDT 2016
> > > >      MACHINE: x86_64  (3600 Mhz)
> > > >       MEMORY: 7.8 GB
> > > >        PANIC: "sysrq: SysRq : Trigger a crash"
> > > >          PID: 10568
> > > >      COMMAND: "bash"
> > > >         TASK: ffff880282a58080  [THREAD_INFO: ffff88026c5e8000]
> > > >          CPU: 3
> > > >        STATE: TASK_RUNNING (SYSRQ)
> > > > crash>
> > > > 
> > > > 
> > > 
> > > If this looks right/reasonable, I captured all the steps here.  If
> > > I
> > > captured that correctly, i could submit a patch to README on how to
> > > do
> > > this statically?:
> > 
> > To be honest, I really don't want to publish it in the package
> > because
> > then I would be on the hook for supporting it, which I am definitely
> > not
> > interested in.  (Not to mention that I couldn't even get it to
> > build).
> > And I don't recall anyone ever asking for it until you did.  I'm
> > curious
> > as to why you can't easily run the crash session on a host where you
> > could build it normally?
> 
> The reason why is there is a break in kdump via 'makedumpfile' in which
> it broke for at least the 4.5 kernel on up (if not older).  So someone
> wanting to produce a kernel crash file for say, the 4.8-rc3 kernel
> won't be able to do it if their kdump.conf is setup to use
> 'makedumpfile'.
> 
> On top of that, there is a problem in older versions of crash which you
> will get this error:
> 
> WARNING: kernels compiled by different gcc versions:
>   src/linux/vmlinux: (unknown)
>   crash.dump kernel: 4.8.2
> 
> WARNING: kernel version inconsistency between vmlinux and dumpfile
> 
> crash: incompatible arguments:
>    src/linux/vmlinux is not SMP -- crash.dump is SMP
> 
> which is fixed starting in crash 7.1.4.

Right, that kind of thing happens all of the time, both with makedumpfile
and the crash utility.  When you're dealing with a moving target, there's
nothing you can do about it except continually update them.  But I don't
see what that has to do with making them statically compiled?

> 
> As part of my role to develop Linux features for future customer products,
> if a customer has: *bleeding edge HW my dept provided as early enablement 
> and *wants to use something just released in mainline via kernel.org and 
> *a bug occurred that crashed the kernel and *we want some crash file to
> try and understand what is going on,
> 
> there currently isn't any other alternative other than to provide a
> compiled makedumpfile solution and crash solution.  And the easiest way
> to deliver a solution to remote customers without intimately
> understanding what all is installed on their computer setups is to
> provide statically compiled exe's because then I know exactly what they
> have and I can test and use the exact same solution.

Why can't you have the customer send the vmcore to you?  Or are they
doing their own analysis?  If so, why can't they set up an environment
where they can be built normally?  For example, have them buy a $200
laptop, install some mainstream Linux, and do it there?  It just seems
that the hoops being jumped could easily be avoided, but obviously I'm
not understanding the scenario.

But anyway, you've done a good job at least getting something up and
running.

Dave

 
> > 
> > That being the case, there will always be this discussion that I could
> > point to for anybody in the future who might be interested.
> > 
> > Dave
> > 
> >  
> >   
> > 
> > > 
> > > 
> > > -----------------
> > > 
> > > Building 'crash' statically (w/lzo2 support)
> > > ============================================
> > > 
> > > To attempt to build 'crash' statically with pretty common lzo2
> > > support
> > > (used by 'makedumpfile'), the static library liblzo2.a is
> > > needed.  However, this is not available in Fedora 24 .rpm packages
> > > :-(.
> > > 
> > > To build it yourself, try:
> > > 
> > > mkdir lzo2_temp
> > > cd lzo2_temp/
> > > yumdownloader --source lzo-devel
> > > pm2cpio lzo-2.08-8.fc24.src.rpm | cpio -idv
> > > tar xf lzo-2.08.tar.gz
> > > cd lzo-2.08/
> > > run ./configure if need-be
> > > make liblzo2.a
> > > 
> > > Then after downloading the crash repo:
> > > https://github.com/crash-utility/crash.git
> > > 
> > > Specify to build it statically in the crash/ directory by creating
> > > a
> > > file called LDFLAGS.extra with a couple of static flags:
> > > 
> > > $ cat LDFLAGS.extra
> > >   -static -static-libgcc
> > > 
> > > and in crash/gdb-X.Y/Makefile at TOPLEVEL_CONFIGURE_ARGUMENTS
> > > variable
> > > add:
> > > 
> > > --enable-static=yes
> > > 
> > > (example:
> > > # The gcc driver likes to know the arguments it was configured
> > > with.
> > > TOPLEVEL_CONFIGURE_ARGUMENTS=./configure --with-separate-debug-
> > > dir=/usr/lib/debug --with-bugurl= --with-expat=no --with-python=no
> > > --
> > > disable-sim --enable-static=yes)
> > > 
> > > and back in the top crash/ directory build
> > > the whole thing with the lzo2 library:
> > > 
> > > $ make lzo
> > > 
> > > (adds to LDFLAGS.extra and creates CFLAGS.extra)
> > > 
> > > 
> > > > 
> > > > > 
> > > > > 
> > > > > Dave
> > > > > 
> > > > > --
> > > > > Crash-utility mailing list
> > > > > Crash-utility at redhat.com
> > > > > https://www.redhat.com/mailman/listinfo/crash-utility
> > > > 
> > > > --
> > > > Crash-utility mailing list
> > > > Crash-utility at redhat.com
> > > > https://www.redhat.com/mailman/listinfo/crash-utility
> > > 
> > > --
> > > Crash-utility mailing list
> > > Crash-utility at redhat.com
> > > https://www.redhat.com/mailman/listinfo/crash-utility
> > 
> > --
> > Crash-utility mailing list
> > Crash-utility at redhat.com
> > https://www.redhat.com/mailman/listinfo/crash-utility
> 
> --
> 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