talloc-2.1.12 issues with library destructor
jra at samba.org
Mon Mar 26 17:19:41 UTC 2018
On Mon, Mar 26, 2018 at 10:16:50AM -0700, Jeremy Allison via samba-technical wrote:
> On Mon, Mar 26, 2018 at 05:00:15PM +0200, Lukas Slebodnik via samba-technical wrote:
> > On (26/03/18 16:06), Ralph Böhme wrote:
> > >Hi Andreas,
> > >
> > >On Mon, Mar 26, 2018 at 03:01:56PM +0200, Andreas Schneider via samba-technical wrote:
> > >> destructors are normally executed after the program returns from main() or
> > >> after exit() is called. talloc tries to clean up its null context memory and
> > >> you have obviously a talloc destructor defined for your kcm_data talloc
> > >> context!
> > >>
> > >> I don't thinks this is an issue in talloc, but sssd should cleanup the memory
> > >> in orderly_shutdown() before it calls exit()!
> > >
> > SSSD allocated memory on context returned by talloc_autofree_context.
> > And I assume it was used due to following parts in documentation
> > """
> > * @brief Provide a talloc context that is freed at program exit.
> > *
> > * This is a handy utility function that returns a talloc context
> > * which will be automatically freed on program exit. This can be used
> > * to reduce the noise in memory leak reports.
> > """
> > And it is not clear which library destructor will be called
> > before talloc. Therefore it might be difficult to rely on talloc_destructors
> > releasing properly data allocated under autofree_context.
> > Sure, sssd can release memory before calling exit e.g.
> > talloc_free(talloc_autofree_context());
> > But then we loose an advantage of relying on automatic release
> > provided by talloc_autofree_context.
> Do not use talloc_autofree_context. It's addition to talloc
> was a *big* API mistake, and I'm trying to remove it from
> Samba in call cases.
^all^ cases of course.
If you look at current master Samba, do:
$ git grep talloc_autofree_context
- the output should be very illuminating.
More information about the samba-technical