라이브러리를 미리로드하여 "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;
}
나는 또한 같은 위치에 버스 오류 :
코드는 다음과 같다.
도와주세요.
당신은
dbx/gdb와 같은 디버거에 프로그램을로드하고 멈추었을 때 Ctrl-C를로드하십시오. 그리고 나서'where' 나 비슷한 명령을 사용하여 컨트롤이 멈추는 곳을 확인하십시오. –