FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Crash Utility

 
 
LinkBack Thread Tools
 
Old 04-25-2012, 11:58 AM
"Karlsson, Jan"
 
Default loop in crash

Hi Dave,
*
I have a corrupt vmcore file (for ARM) that makes crash loop forever. The problem is in memory.c, function max_cpudata_limit. The last part of that function:
*
********* if (VALID_MEMBER(kmem_list3_shared) && VALID_MEMBER(kmem_cache_s_lists) &&
********* *** readmem(kmem_cache_nodelists(cache), KVADDR, &start_address[0],
********* *** sizeof(ulong) * vt->kmem_cache_len_nodes, "array nodelist array",
********* *** RETURN_ON_ERROR)) {
****************** for (i = 0; i < vt->kmem_cache_len_nodes; i++) {
************************* *** if (start_address[i] == 0)
************************* ************* continue;
************************* *** 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;
************************* *** }
****************** }
********* }
********* FREEBUF(start_address);
********* return max_limit;
*
bail_out:
********* vt->flags |= KMEM_CACHE_UNAVAIL;
********* error(INFO, "unable to initialize kmem slab cache subsystem

");
********* *cpus = 0;
********* return 0;
*
The problem is that the readmem statement “if (readmem(start_address[i] + OFFSET(kmem_list3_shared), …..” fails, and then the function max_cpudata_limit is called over and over again. I did a patch adding “else goto bail_out;” if the readmem fails and then crash managed to continue. I do not know if this is really a good idea.
*
As this seems only to be a problem for corrupt vmcore files I do not know if you want to do anything about it.
*
Best regards
Jan
*
*
Jan Karlsson
Senior Software Engineer
MIB
*
Sony Mobile Communications
Tel: +46703062174
sonymobile.com
*

*
--
Crash-utility mailing list
Crash-utility@redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility
 

Thread Tools




All times are GMT. The time now is 09:20 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org