----- Original Message ----- > > > ----- Original Message ----- > > On Mon 2016-04-18 11:22 -0400, Dave Anderson wrote: > > > > Hi Dave, > > > > > I may be missing something, but it seems like you just need it to calculate > > > cpuaddr each time through the loop, and then you're done with it. But then > > > you rewind() it, store it, and keep tmpfp open across the do_datatype_addr() > > > call? What am I missing? > > > > sure -- but I'd prefer to avoid the use of tmpfile()/fclose() in the for loop. > > Albeit since we set OPEN_ONLY_ONCE, the following should be fine: > > Yep, much better... > > Thanks, > Dave Hi Aaron, Sorry for the delay in getting around to testing this patch. Anyway, the tmpfile() portion certainly looks better, but I didn't have any luck with my testing of the patch functionality. My first test attempt was with the kmalloc-32 slab freelist corruption vmcores that I'm looking at, just because they involve the kmem_cache data structure, which contains a per-cpu pointer to each cpu's the kmem_cache_cpu structure: struct kmem_cache { struct kmem_cache_cpu __percpu *cpu_slab; ... First -- looking at it without your patch -- here is the kmem_cache.cpu_slab per-cpu pointer: crash> kmem_cache.cpu_slab ffff880333001c00 cpu_slab = 0x163c0 crash> Taking that percpu address, I can look at each cpu's instance of the kmem_cache_cpu structure like so, and can see the corruptio of cpu 3's freelist pointer: crash> kmem_cache_cpu 0x163c0:a [0]: ffff88033fc163c0 struct kmem_cache_cpu { freelist = 0xffff88031c028fa0, tid = 31034440, page = 0xffffea000c700a00, partial = 0xffffea000ca5d380 } [1]: ffff88033fc963c0 struct kmem_cache_cpu { freelist = 0xffff8802d44c91c0, tid = 28218351, page = 0xffffea000b513240, partial = 0x0 } [2]: ffff88033fd163c0 struct kmem_cache_cpu { freelist = 0xffff8802d442ba80, tid = 25768102, page = 0xffffea000b510ac0, partial = 0xffffea000c9bce40 } [3]: ffff88033fd963c0 struct kmem_cache_cpu { freelist = 0xffff001090e33f80, tid = 26298247, page = 0xffffea0006438cc0, partial = 0xffffea0002ec8b80 } crash> Now, with your patch applied, I get this: crash> kmem_cache_cpu 163c0:a struct: invalid percpu symbol value: 163c0 crash> I tried it both with your original patch, and with your original patch with your updated open_tmpfile() segment jammed in. Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility