On 20 Jun 2014, at 18:50, Arran Cudbard-Bell <a.cudbardb@freeradius.org> wrote:
On 20 Jun 2014, at 18:39, Phil Mayers <p.mayers@IMPERIAL.AC.UK> wrote:
Erm... Oh dear:
https://lists.samba.org/archive/samba-technical/2014-June/100669.html
Does this mean what I think it does?
Appears so.
OK, well that explains a lot. Basically we can't parent REQUEST structs from any shared contexts, same for the handlers. That's going to make request chaining using talloc a bit more difficult, but it's not impossible, and we can still keep the nice autofree behaviour we just need to use destructors instead. The rest of the code was written to assume REQUESTS were only used by one thread at a time so should be ok. Things like rbtrees, hashes, lists, etc are all synchronised so they're fine. I'm still not entirely sure why it's not thread safe, perhaps you could ask for an explanation of what parts of the talloc structures would be munged by two threads accessing them? Looking at the code the only issues I can see would be for the artificial memory limits you can set on blocks. They really need to update their documentation. It's not at all clear what is legal/illegal. -Arran Arran Cudbard-Bell <a.cudbardb@freeradius.org> FreeRADIUS Development Team FD31 3077 42EC 7FCD 32FE 5EE2 56CF 27F9 30A8 CAA2