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