svn commit: samba r19296 - in branches/SAMBA_4_0/source/lib: .

tridge at samba.org tridge at samba.org
Sun Oct 15 21:31:58 GMT 2006


Author: tridge
Date: 2006-10-15 21:31:58 +0000 (Sun, 15 Oct 2006)
New Revision: 19296

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19296

Log:

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 :)

Modified:
   branches/SAMBA_4_0/source/lib/db_wrap.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/db_wrap.c
===================================================================
--- branches/SAMBA_4_0/source/lib/db_wrap.c	2006-10-15 21:09:42 UTC (rev 19295)
+++ branches/SAMBA_4_0/source/lib/db_wrap.c	2006-10-15 21:31:58 UTC (rev 19296)
@@ -65,6 +65,21 @@
 	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 @@
 		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;
 }
 



More information about the samba-cvs mailing list