[Crash-utility] kmem -[sS] segfault on 2.6.25.17

Dave Anderson anderson at redhat.com
Thu Oct 16 17:06:58 UTC 2008


----- "Mike Snitzer" <snitzer at gmail.com> wrote:

> On Thu, Oct 16, 2008 at 12:25 PM, Dave Anderson <anderson at redhat.com>
> wrote:
> >
> > ----- "Mike Snitzer" <snitzer at gmail.com> wrote:
> >
> >> I'm getting a core when I try to show slab data (kmem -[sS]) on
> >> 2.6.25.17 with both a live crash or saved vmcore.
> >>
> >> The core shows that the segv is coming from memset() via
> >> gather_cpudata_list_v2_nodes (memory.c:10119).  This is with crash
> >> 4.0-7.4, but the same crash occurs with crash 4.0-6.3
> >> (memory.c:10108)
> >> and older.
> >>
> >> I've also seen kmem -[sS] segfaults with older kernels too (e.g.
> >> 2.6.22.x).
> >>
> >> Have others experienced this?  Would it be useful for me to
> provide
> >> my
> >> kernel config?
> >
> > No that won't help.
> 
> Actually I think it may considering kmem -[sS] works perfectly fine
> on
> the same identical 2.6.22.19 kernel if various debug features are
> _not_ enabled, see the attached .config diff.  Of note:
> -# CONFIG_DEBUG_SLAB is not set
> +CONFIG_DEBUG_SLAB=y
> +CONFIG_DEBUG_SLAB_LEAK=y
> 
> Comparable debug features are enabled in my 2.6.25 kernel that causes
> crash to segfault.

Good point... 

> 
> > It's failing in the BZERO() here:
> >
> >  10117         for (i = 0; (i < ARRAY_LENGTH(kmem_cache_s_array))
> &&
> >  10118              (cpudata[i]) && !(index); i++) {
> >  10119                 BZERO(si->cpudata[i], sizeof(ulong) *
> vt->kmem_max_limit);
> >
> > What is "i" equal to when it segfaults?  If you have a crash core
> file,
> > print out the contents of the global "vm_table".  In that structure
> > there is a "kmem_max_cpus" field.  If "i" is greater or equal to
> that,
> > then that's one explanation.
> 
> i=0 and kmem_max_cpus=4.

Ok, then I can't see off-hand why it would segfault.  Prior to this
routine running, si->cpudata[0...i] all get allocated buffers equal
to the size that's being BZERO'd.

Is si->cpudata[i] NULL or something?

Dave




More information about the Crash-utility mailing list