[LCP]Blocking malloc

Hemant Mohan hemantm at pune.tcs.co.in
Thu Apr 11 15:49:06 UTC 2002


Hi,

I am stuck up in problem where the malloc is blocking.
I am programming in a multithreaded environment, using gcc-3.0.3 under linux. 
The thread related functions are from a user created library.

The program structure is something like this:

main()
{
    ....
    thread_create (function1, ...);
    ....
}

function1(...)
{
    ...
    thread_create(function2, ...)
}

function2(...)
{
    char* x = NULL;
    printf("First print\n");
    if((x = malloc(100*sizeof(char))) == NULL)
    {
         printf("second printf, malloc error\n");
         fflush(stdout);
         perror("malloc error");
    }
    printf("third printf\n");
    fflush(stdout);
    ....
}

My problem is
When the program is run we reach the function2 and the first print message is 
displayed. However after that the program blocks. Neither I get the second 
print message nor the third one. The program doesn't proceed further. Even 
there is no error message from the perror.  Normally, if the malloc fails 
then it should return a NULL and we should get the second printf and the 
malloc error. Else, if the malloc call is successful then the third print 
should be displayed.
Where am I going wrong ?  I couldn't find any documentation indicating any 
condition where malloc can block.

Can anyone please help .

Thanks,
Hemant 




More information about the linuxCprogramming mailing list