Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Jun 2010 21:23:43 +0200
From:      Vikash Badal <Vikash.Badal@is.co.za>
To:        "freebsd-questions@freebsd.org" <freebsd-questions@freebsd.org>
Subject:   threads and malloc/free  on freebsd 8.0
Message-ID:  <9B425C841283E0418B1825D40CBCFA613D9E3CA643@ZABRYSVISEXMBX1.af.didata.local>

next in thread | raw e-mail | index | archive | help
Greetings.

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

In a worker thread, I have the following.

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

=20  free(inst);
=20 =20
=20   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>------------------
=20  char *z;

=20  z =3D (char*)malloc(1000);
=20  printf("malloc is %ld\n", malloc_usable_size(z));
=20  free(z);
=20  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 f=
ault ?


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+Confiden=
tiality+Notice+and+Disclaimer.htm. Should you not have Web access, send a=
=20mail to disclaimers@is.co.za and a copy will be emailed to you.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9B425C841283E0418B1825D40CBCFA613D9E3CA643>