ライブラリをプリロードして「malloc」をオーバーロードしています。このカスタム「malloc」では、環境変数を使用して、カスタム「malloc」を使用するプログラムを一般的な「malloc」と区別しています。
問題は、いくつかの「malloc」の後、プログラムが 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 エディタで使用しているときに、同じ位置でバス エラーが発生します。
私を助けてください。
ありがとうございました