----- Original Message -----
 
 
 strings ./vmlinux | grep "Linux version"
 Linux version 3.0.15+ (oza@lc-blr-291) (gcc version 4.4.3 (GCC) ) #4 PREEMPT Mon Aug 13
12:02:58 IST 2012
 
 cat /proc/version
 Linux version 3.0.15+ (oza@lc-blr-291) (gcc version 4.4.3 (GCC) ) #4 PREEMPT Mon Aug 13
12:02:58 IST 2012 
Looks OK -- so you'll have to debug verify_namelist().  It does a 
popen("/usr/bin/strings ./vmlinux") and searches for the linux_banner
string here:  
        while (fgets(buffer, BUFSIZE-1, pipe)) {
                if (!strstr(buffer, "Linux version 2.") &&
                    !strstr(buffer, "Linux version 3."))
                        continue;
and when it finds it, it picks out the gcc version number.  I don't
know why it's not working in your case.
Also, since your vmlinux file is identical to /proc/version, why are
you using a System.map argument again?
 
 crash> ptype struct kmem_cache
 type = struct kmem_cache {
 struct array_cache *array[1];
 unsigned int batchcount;
 unsigned int limit;
 unsigned int shared;
 unsigned int buffer_size;
 u32 reciprocal_buffer_size;
 unsigned int flags;
 unsigned int num;
 unsigned int gfporder;
 gfp_t gfpflags;
 size_t colour;
 unsigned int colour_off;
 struct kmem_cache *slabp_cache;
 unsigned int slab_size;
 unsigned int dflags;
 void (*ctor)(void *);
 const char *name;
 struct list_head next;
 struct kmem_list3 *nodelists[1];
 } 
OK, in this case you'll have to debug get_array_length(), and figure
out why it's not finding the lookfor2 string -- which should be set
to "*array[" -- in the ptype command output.  Again, I don't know
why it's not finding it.
Dave