talloc: talloc_set_memlimit causes all reallocs to fail when used on pools. talloc_set_memlimit not enforced correctly on pools.

Jeremy Allison jra at samba.org
Tue Oct 20 18:33:36 UTC 2020

On Tue, Oct 20, 2020 at 01:03:14PM -0500, Arran Cudbard-Bell wrote:
> Then there's another issue with object_count ending
> up off by one, which means talloc_free_children doesn't
> actually return memory to the pool, and that messes up
> some of the other tests I'm adding.  Just tracking down
> when and why this happens now.... It might have been a
> pre-existing issue and not related to this patch, I'm just
> seeing it because of using talloc_free_children to reset
> the pool between some tests.

Oh, I think that may be here:

1895         if (pool_hdr) {
1896                 new_ptr = tc_alloc_pool(tc, size + TC_HDR_SIZE, 0);
1897                 pool_hdr->object_count--;

We don't reset pool_hdr->object_count on early return
in this codepath.

Are you setting ALWAYS_REALLOC==1 in your tests ?

Not sure if this should be:

1894 #if (ALWAYS_REALLOC != 0)

More information about the samba-technical mailing list