[Crash-utility] loop in crash

Dave Anderson anderson at redhat.com
Wed Apr 25 14:57:19 UTC 2012



----- Original Message -----
>
> So I don't understand how you got into a loop unless the kmem_cache list
> walk-through is the real problem.  If you were to print out the "cache"
> address each time through the do-while loop, does the list start repeating
> itself?
> 
> And if that's true, perhaps the kmem_cache_init() should use the
> hq_open()/hq_enter()/hq_close() facility on each cache address to
> catch a duplicate (false) entry.
> 
> Dave

As a side issue, you have pinpointed a potential problem
area if the first readmem() does fail, because in that case it
should "continue" instead of using the invalid "shared" value
in the second readmem():  
 
                        if (readmem(start_address[i] + OFFSET(kmem_list3_shared),
                            KVADDR, &shared, sizeof(void *),
                            "kmem_list3 shared", RETURN_ON_ERROR|QUIET)) {
                                if (!shared)
                                        break;
                        }
                        if (readmem(shared + OFFSET(array_cache_limit),
                            KVADDR, &limit, sizeof(int), "shared array_cache limit",
                            RETURN_ON_ERROR|QUIET)) {
                                if (limit > max_limit)
                                        max_limit = limit;
                                break;
                        }

But again, I don't see that having anything to do with your problem.
And in all practical circumstances, that first readmem() should
never fail, even though it is allowable.

I'll fix that...

Dave




More information about the Crash-utility mailing list