samba-technical@lists.samba.org
[Top] [All Lists]

Re: talloc null context thread safe ?

Subject: Re: talloc null context thread safe ?
From: simo
Date: Mon, 06 Nov 2006 18:55:14 -0500
On Tue, 2006-11-07 at 09:42 +1100, Andrew Bartlett wrote: 
> On Mon, 2006-11-06 at 23:19 +0100, RÃmi wrote:
> > Hello,
> > 
> > I am using talloc in a project other than Samba : I hope this is the right 
> > list for my question.
> 
> I think so (that is, I know of no better place to ask).
> 
> > I understand that talloc does not deal with threads, and in fact, it is 
> > thread 
> > safe, as long as each thread uses different memory contexts. If two threads 
> > uses the same context then they need to synchronise in order to be safe.
> > Am I correct ?
> 
> Yes.
> 
> > If so, my concern is with the allocation of "top-level" contexts i.e. when 
> > using a NULL parent. When using the "talloc_enable_leak_report", I 
> > understand 
> > that the NULL context is in fact a hidden "null context" global variable, 
> > so 
> > allocating anything from the NULL context (e.g. tmp_ctx = talloc_new 
> > (NULL)) 
> > is no longer thread safe. Am I missing something, or may be this is obvious 
> > ?
> > So in multi-thread environement, I should never use a NULL context as a 
> > parent 
> > (may be instead define my own per-thread null-context). 
> 
> In short, you should never use the NULL context, particularly in your
> environment.  

Yeah using the NULL context kind of defeats the purpose of the talloc
hierarchy, but the top level context is going to be a NULL one anyway.

I'd say that the best thing is to probably change talloc to save the pid
and create a "null context list" indexed by pid so that you can have a
per-thread top-level context when talloc_enable_leak_report() is in use.

Simo.

-- 
Simo Sorce
Samba Team GPL Compliance Officer
email: idra@xxxxxxxxx
http://samba.org

<Prev in Thread] Current Thread [Next in Thread>