[Crash-utility] [PATCH] Fix junk values when run crash on a .gz file
Dave Anderson
anderson at redhat.com
Mon Dec 5 16:24:27 UTC 2011
----- Original Message -----
> On Mon, 2011-12-05 at 09:46 -0500, Dave Anderson wrote:
> >
> > ----- Original Message -----
> > > Hi Dave,
> > >
> > > If a user by mistake issues the below command some junk characters are
> > > printed on the console. (crash vmlinux.gz or any .gz file) Please advise.
> > >
> > > linux:/boot # crash vmlinux-3.0.10-0.7-default.gz
> > >
> > > crash: ��{�UU����3ܣ@bjb
> > > R�I-& ��
> > >
> > > �c�"O9�Y��X^f<3��86���v1RS�q��\`������#��^����k�s@��}���=�׳d��g_�^{���Z{�����O-
> > > F�-W|y�7���f9�k���g���: compressed file name does
> > > not start with "vmlinux"
> > > Use "-f vmlinux-3.0.10-0.7-default.gz" on command line to
> > > override.
> > >
> > > crash: vmlinux-3.0.10-0.7-default.gz: not a supported file format
> >
> > Hmmm, I'm not sure why that's happening, although the name string in the
> > header does get clipped. The closest example I have on hand is this one,
> > where the pre-compressed filename was vmlinux-2.6.36-0.16.rc3.git0.fc15.x86_64,
> > and the .gz filename is vmlinux-2.6.36-0.16.rc3.git0.fc15.x86_64.gz, and
> > which works fine. And if I change its name to "vmlinux.gz", that still
> > works as expected. So I don't know how to reproduce what you are
> > seeing.
> >
> > Anyway, the file command shows the (possibly clipped) string in the header
> > that is being looked at:
> >
> > $ file vmlinux-2.6.36-0.16.rc3.git0.fc15.x86_64.gz
> > vmlinux-2.6.36-0.16.rc3.git0.fc15.x86_64.gz: gzip compressed data, was "vmlinux-2.6.36-0.16.rc3.git0.fc", from Unix, last modified:
> > Tue Oct 12 14:43:02 2010
> > $
> >
> > What does your .gz files show when you run "file" against them?
> > And is yours an x86_64 file?
> >
> > Dave
>
> Yeah its an x86_64 file.
>
> linux:/boot:file vmlinux-3.0.10-0.7-default.gz
> vmlinux-3.0.10-0.7-default.gz: gzip compressed data, from Unix, max compression
OK, so for whatever reason, it's not dumping the "was <filename>" part
of the header?
If I look at my sample's gzip header, it looks like:
$ od -c vmlinux-2.6.36-0.16.rc3.git0.fc15.x86_64.gz | head
0000000 037 213 \b \b 6 254 264 L \0 003 v m l i n u
0000020 x - 2 . 6 . 3 6 - 0 . 1 6 . r c
0000040 3 . g i t 0 . f c 1 5 . x 8 6 _
0000060 6 4 \0 354 375 \v | 024 325 375 300 177 O n $ @
0000100 p 303 325 250 250 A 202 b 305 J 274 264 D @ 263 232
0000120 350 254 335 ( ^ P 274 U , 202 V 333 376 254 356 002
0000140 Z 251 Y 227 ( 343 262 224 326 K 351 035 + 266 264 372
0000160 253 x \a T H 270 d 301 k D E 224 V n \n 023
0000200 203 212 250 341 * 373 377 ~ 317 354 - 200 332 377 345 y
0000220 376 257 327 363 | 336 / % 273 s f 346 234 231 9 s
$
where you can see the NULL-terminated filename string starting at
byte offset 10. What does yours look like?
Dave
> and "by mistake" i meant if a user issues crash on a .gz file without
> using -f option.
>
> Aruna.
>
> >
> >
> >
> >
> > >
> > > Aruna
> > >
> > > On Mon, 2011-12-05 at 08:28 -0500, Dave Anderson wrote:
> > > > The whole point of the "vmlinux" name check is to verify from
> > > > the compressed header itself whether it was generated from a
> > > > file
> > > > that started with the name-string "vmlinux". It's not
> > > > interested
> > > > in whatever the .gz creator named the compressed file. If you
> > > > want
> > > > to work around that restriction, use "crash -f ...".
> > > >
> > > > Dave
> > > >
> > > >
> > > > ----- Original Message -----
> > > > > Signed-off-by: Aruna Balakrishnaiah
> > > > > <aruna at linux.vnet.ibm.com>
> > > > >
> > > > > ---
> > > > > symbols.c | 4 ++--
> > > > > 1 files changed, 2 insertions(+), 2 deletions(-)
> > > > >
> > > > > diff --git a/symbols.c b/symbols.c
> > > > > index 0cd3a01..acd8ad5 100755
> > > > > --- a/symbols.c
> > > > > +++ b/symbols.c
> > > > > @@ -2995,10 +2995,10 @@ is_compressed_kernel(char *file, char
> > > > > **tmp)
> > > > > type = 0;
> > > > >
> > > > > if ((header[0] == 0x1f) && (header[1] == 0x8b) &&
> > > > > (header[2] ==
> > > > > 8))
> > > > > {
> > > > > - if (!STRNEQ((char *)&header[10], "vmlinux") &&
> > > > > + if (!STRNEQ(basename(file), "vmlinux") &&
> > > > > !(st->flags & FORCE_DEBUGINFO)) {
> > > > > error(INFO, "%s: compressed file name does not "
> > > > > - "start with \"vmlinux\"\n", &header[10]);
> > > > > + "start with \"vmlinux\"\n", file);
> > > > > error(CONT,
> > > > > "Use \"-f %s\" on command line to override.\n\n",
> > > > > file);
> > > > >
> > > > >
> > > >
> > >
> > >
> > >
> >
>
>
>
>
>
More information about the Crash-utility
mailing list