首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序被getenv()卡住

程序被getenv()卡住
EN

Stack Overflow用户
提问于 2012-04-16 18:38:01
回答 1查看 485关注 0票数 0

我通过预加载库来重载"malloc“。在这个自定义"malloc“中,我使用环境变量来区分使用自定义"malloc”和通用"malloc“的程序。

问题是,在几次"mallocs“之后,程序被getenv()调用卡住了。我不能弄明白为什么程序会卡在里面。

代码如下:

代码语言:javascript
复制
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编辑器中使用这个库时,我在相同的位置也得到了一个总线错误。

请帮帮我。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-04-16 18:46:26

你确定程序会被getenv()调用卡住吗?我对互斥锁更加怀疑:如果另一个线程持有互斥锁,pthread_mutex_lock(&fgPTMutex);将阻塞

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10172548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档