diff options
Diffstat (limited to 'lib/talloc/talloc_guide.txt')
-rw-r--r-- | lib/talloc/talloc_guide.txt | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/talloc/talloc_guide.txt b/lib/talloc/talloc_guide.txt index a79fd03a831..f29b1d699a8 100644 --- a/lib/talloc/talloc_guide.txt +++ b/lib/talloc/talloc_guide.txt @@ -74,6 +74,19 @@ without proper synchronization ; shouldn't be used by several threads simultaneously without synchronization. +talloc and shared objects +------------------------- + +talloc can be used in shared objects. Special care needs to be taken +to never use talloc_autofree_context() in code that might be loaded +with dlopen() and unloaded with dlclose(), as talloc_autofree_context() +internally uses atexit(3). Some platforms like modern Linux handles +this fine, but for example FreeBSD does not deal well with dlopen() +and atexit() used simultaneously: dlclose() does not clean up the list +of atexit-handlers, so when the program exits the code that was +registered from within talloc_autofree_context() is gone, the program +crashes at exit. + =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- (type *)talloc(const void *context, type); |