summaryrefslogtreecommitdiff
path: root/lib/talloc/talloc.h
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2010-09-24 19:20:06 +0200
committerVolker Lendecke <vl@samba.org>2010-09-24 17:21:42 -0700
commite325a5b67453fd8cfe06d3d0d6c7c5ab7e4ad772 (patch)
tree0129f5e7d0e451fbc33720a373887a38afffa72f /lib/talloc/talloc.h
parente90c707f144a362a708f5d2f3eb85192dc98980a (diff)
downloadsamba-e325a5b67453fd8cfe06d3d0d6c7c5ab7e4ad772.tar.gz
samba-e325a5b67453fd8cfe06d3d0d6c7c5ab7e4ad772.tar.bz2
samba-e325a5b67453fd8cfe06d3d0d6c7c5ab7e4ad772.zip
talloc: Add a warning about talloc_autofree_context() and dlclose()
Diffstat (limited to 'lib/talloc/talloc.h')
-rw-r--r--lib/talloc/talloc.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/talloc/talloc.h b/lib/talloc/talloc.h
index 187d7e7816..8b9ade202e 100644
--- a/lib/talloc/talloc.h
+++ b/lib/talloc/talloc.h
@@ -972,6 +972,15 @@ int talloc_unlink(const void *context, void *ptr);
* which will be automatically freed on program exit. This can be used
* to reduce the noise in memory leak reports.
*
+ * Never use this in code that might be used in objects loaded with
+ * dlopen and unloaded with dlclose. 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.
+ *
* @return A talloc context, NULL on error.
*/
void *talloc_autofree_context(void);