TALLOC_FREE()
tridge at samba.org
tridge at samba.org
Tue Apr 20 15:56:04 MDT 2010
Hi Jelmer,
> It would be nice to standardize on one or the other though rather than
> using a strange mix of both. Should we encourage the use of
> TALLOC_FREE() over talloc_free() ?
They are different calls. We certainly should not deprecate the use of
talloc_free().
A TALLOC_FREE() only makes sense at all when the variable you are
freeing is long term. If it's a stack variable then it usually makes
no sense.
It also loses information. As someone already pointed out, we get a
nice talloc double free report when you re-use a free ptr. That report
includes the location of the first free, which is encoded in the
memory block.
If you use TALLOC_FREE() then the 2nd free becomes allowed (as
talloc_free(NULL) does not abort). You may well end up with a
segfault, which is also useful, but the backtrace from the segfault
gives you no idea where the first free was, as you've wiped that
information with TALLOC_FREE(). I've used that "double free error -
first free may be at xxx.c:yyy" report to find many subtle bugs.
I know some people are committed to TALLOC_FREE(), and that's fine,
but let's please not go so far as to deprecate the function that gives
us better debugging ability.
Cheers, Tridge
More information about the samba-technical
mailing list