Fault address when malloc/free pthread_t across threads
        Posted  
        
            by scleung
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by scleung
        
        
        
        Published on 2010-04-28T06:49:53Z
        Indexed on 
            2010/04/28
            6:53 UTC
        
        
        Read the original article
        Hit count: 272
        
android-ndk
Fault address occurred when i malloc pthread_t to save a newly created thread id and free it in another thread. Codes as follows:
typedef struct _TaskInfo { 
    // int dummy_int;
    pthread_t tid;
} TaskInfo;
void* dummy_task(void* pArg) {
    free(pArg);
    return NULL;
}
void create_task() {
    TaskInfo *pInfo;
    pthread_attr_t attr;
    // set detached state stuff ...
    pInfo = (TaskInfo*) malloc(sizeof(TaskInfo));
    pthread_create(&pInfo->tid, &attr, dummy_task, pInfo);
    // destroy pthread attribute stuff ...
}
int main() {
    int i;
    while(i < 10000) {
        create_task();
        ++i;
    }
    return 0;
}
When I uncomment the member dummy_int of TaskInfo it sometimes ran successfully, but sometimes failed. My platform is VMWare + Ubuntu 9.10 + ndk r3
Thanks!
© Stack Overflow or respective owner