From ba68ee4cd40ca6a5d17fedf621bc17d966d9bd48 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 15 Oct 2006 21:31:58 +0000 Subject: r19296: added a leak detector to ldb_wrap_connect() this makes 'make test' _very_ noisy, apologies for that, but nearly all the noise is real memory leaks, so if you don't like it then jump in and help fix the leaks :) (This used to be commit d791fd7b7b7a0a2674a70afe6cbbf0e3bd014544) --- source4/lib/db_wrap.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'source4/lib/db_wrap.c') diff --git a/source4/lib/db_wrap.c b/source4/lib/db_wrap.c index b7a6a17ef8..de6e8a2c0b 100644 --- a/source4/lib/db_wrap.c +++ b/source4/lib/db_wrap.c @@ -65,6 +65,21 @@ char *wrap_casefold(void *context, void *mem_ctx, const char *s) return strupper_talloc(mem_ctx, s); } +/* check for leaks */ +static int ldb_wrap_destructor(struct ldb_context *ldb) +{ + if (talloc_total_blocks(ldb) > 300) { + DEBUG(0,("WARNING: probable memory leak in ldb %s - %lu blocks %lu bytes\n", + (char *)ldb_get_opaque(ldb, "wrap_url"), + (unsigned long)talloc_total_blocks(ldb), + (unsigned long)talloc_total_size(ldb))); +#if 0 + talloc_report_full(ldb, stdout); +#endif + } + return 0; +} + /* wrapped connection to a ldb database to close just talloc_free() the returned ldb_context @@ -136,12 +151,13 @@ struct ldb_context *ldb_wrap_connect(TALLOC_CTX *mem_ctx, return NULL; } - talloc_free(real_url); - ldb_set_debug(ldb, ldb_wrap_debug, NULL); ldb_set_utf8_fns(ldb, NULL, wrap_casefold); + ldb_set_opaque(ldb, "wrap_url", real_url); + talloc_set_destructor(ldb, ldb_wrap_destructor); + return ldb; } -- cgit