我通過預加載庫來重載「malloc」。在這個自定義的「malloc」中,我使用環境變量來區分我的程序,以使用我的自定義「malloc」從一般的「malloc」。程序卡在getenv()
問題是,在幾個「mallocs」之後程序卡在getenv()調用中。我無法弄清楚爲什麼該程序陷入內部。
的代碼如下:
void* PerfTrackMallocInterposition::Malloc(size_t size) {
// Malloc with statistics
pthread_mutex_lock(&fgPTMutex);
char *checkCDBEnd=NULL;
static const char* CDBEndEnv = "checkCDBEnd";
checkCDBEnd = getenv(CDBEndEnv); //program gets stuck here
if(checkCDBEnd!=NULL)
{
if(checkCDBEnd[0]=='1')
{
if(size>1024)
{
void *result = Alloc(size); //Call to custom malloc
pthread_mutex_unlock(&fgPTMutex);
return result;
}
}
}
void* result = (*fPMalloc)(size); //call to normal malloc
pthread_mutex_unlock(&fgPTMutex);
return result;
}
我也是在相同的位置獲得一個總線錯誤而使用這個庫vim編輯器。
請幫幫我。
謝謝
將程序加載到dbx/gdb和「Ctrl-C」之類的調試程序中時,它會卡住。然後使用'where'或類似的命令檢查控制卡在哪裏卡住 – 2012-04-16 10:57:28