threads and malloc/free on freebsd 8.0

Vikash Badal Vikash.Badal at is.co.za
Fri Jun 11 19:23:49 UTC 2010


Greetings.

I have a thread socket application that seems to be behaving strangely

In a worker thread, I have the following.

<CODE>-----------
   LogMessage(DEBUG_0, "allocated %ld", malloc_usable_size(inst));
   
   free(inst);
   
   LogMessage(DEBUG_0, "after free allocated %ld", malloc_usable_size(inst));

   free(inst);
   
    return 0;
-----------</CODE>

output> allocated 2304
output> after free allocated 2304

from playing around, this should have segfaulted but it didn't:


if I try this from a non threaded, non socket code:
<CODE>------------------
   char *z;

   z = (char*)malloc(1000);
   printf("malloc is %ld\n", malloc_usable_size(z));
   free(z);
   printf("after malloc is %ld\n", malloc_usable_size(z));
------------------</CODE>

Output> malloc is 1024
Output> Segmentation fault (core dumped)



Can anyone enlighten me ? why did the 2nd free not cause a segmentation fault ?


If im not clear, please forgive me.


Please note: This email and its content are subject to the disclaimer as displayed at the following link http://www.is.co.za/legal/E-mail+Confidentiality+Notice+and+Disclaimer.htm. Should you not have Web access, send a mail to disclaimers at is.co.za and a copy will be emailed to you.


More information about the freebsd-questions mailing list