Alex Sidorenko wrote: > Hi Dave, > > trying the latest crash-4.0-3.20 on the latest Ubuntu/feisty kernel > 2.6.20-9-generic I have found that live access does not work because of the > following mismatch: > > /proc/version: > Linux version 2.6.20-9-generic (root@rothera) (gcc version 4.1.2 (Ubuntu > 4.1.2-0ubuntu3)) #2 SMP Mon Feb 26 03:01:44 UTC 2007 > linux_banner: > Linux version 2.6.20-9-generic (root@rothera) (gcc version 4.1.2 (Ubuntu > 4.1.2-0ubuntu3)) #2 SMP Mon Feb 26 03:01:44 UTC 2007 (Ubuntu > 2.6.20-9.16-generic) > > Looking at 2.6.20 sources (as provided in Ubuntu package) we see: > > ---------------------------------------------------------------------------------------- > const char linux_banner[] = > "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" > LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION > #ifdef CONFIG_VERSION_SIGNATURE > " (" CONFIG_VERSION_SIGNATURE ")" > #endif > "\n"; > > const char linux_proc_banner[] = > "%s version %s" > " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" > " (" LINUX_COMPILER ") %s\n"; > ---------------------------------------------------------------------------------------- > > As a result, these two strings will be different if CONFIG_VERSION_SIGNATURE > is defined as non-empty string. > > The comparison crash uses is (kernel.c): > > if (strlen(kt->proc_version) && !STREQ(buf, kt->proc_version)) { > if (CRASHDEBUG(1)) { > fprintf(fp, "/proc/version:\n%s", > kt->proc_version); > fprintf(fp, "linux_banner:\n%s\n", buf); > } > goto bad_match; > > I tried to fix the problem by replacing STREQ with STRNEQ. Unfortunately, this > does not work as both strings are LF-terminated. So I had to use > > --- kernel.c.orig 2007-02-21 15:52:01.000000000 -0500 > +++ kernel.c 2007-03-11 08:20:38.468024104 -0400 > @@ -498,7 +498,8 @@ > error(WARNING, "cannot read linux_banner string\n"); > > if (ACTIVE()) { > - if (strlen(kt->proc_version) && !STREQ(buf, kt->proc_version)) > { > + int cmplen = strlen(kt->proc_version)-1; > + if (cmplen>0 && strncmp(buf, kt->proc_version, cmplen) != 0) { > if (CRASHDEBUG(1)) { > fprintf(fp, "/proc/version:\n%s", > kt->proc_version); > > Please note that this seems to be Ubuntu-specific problem - the generic > 2.6.20.2 has linux_banner definition without CONFIG_VERSION_SIGNATURE. > Searching Google for "linux CONFIG_VERSION_SIGNATURE" I can see only results > related to Ubuntu. > > Regards, > Alex Hi Alex, This looks fine -- queued for the next release. Thanks, Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility