From: Rusty Russell Date: Mon, 26 Jul 2010 06:38:07 +0000 (+0930) Subject: vacuum: fix crash on vacuum abort X-Git-Tag: ctdb-1.10~76^2~1 X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=8e518950ba281502318d6300f7a5ec6cdf6b5674;p=sahlberg%2Fctdb.git vacuum: fix crash on vacuum abort Martin Schwenke discovered that 517f05e42f17766b1e8db8f1f4789cbad968e304 ("freeze: abort vacuuming when we're going to freeze.") used ctdb_db for a logging message which is in fact uninitialized, causing a crash (even if it wasn't actually logged). Initialize it properly. Also fix incorrect format in another logging message introduced in that same change. CQ:S1019093 Signed-off-by: Rusty Russell --- diff --git a/server/ctdb_vacuum.c b/server/ctdb_vacuum.c index 17afd79a..59ce0ec2 100644 --- a/server/ctdb_vacuum.c +++ b/server/ctdb_vacuum.c @@ -636,6 +636,7 @@ static int ctdb_repack_db(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx) vdata->vacuum_limit = vacuum_limit; vdata->repack_limit = repack_limit; vdata->delete_tree = trbt_create(vdata, 0); + vdata->ctdb_db = ctdb_db; if (vdata->delete_tree == NULL) { DEBUG(DEBUG_ERR,(__location__ " Out of memory\n")); talloc_free(vdata); @@ -887,9 +888,9 @@ void ctdb_stop_vacuuming(struct ctdb_context *ctdb) { /* Simply free them all. */ while (ctdb->vacuumers) { - DEBUG(DEBUG_INFO, ("Aborting vacuuming for %s (%p)\n", + DEBUG(DEBUG_INFO, ("Aborting vacuuming for %s (%i)\n", ctdb->vacuumers->vacuum_handle->ctdb_db->db_name, - ctdb->vacuumers->child_pid)); + (int)ctdb->vacuumers->child_pid)); /* vacuum_child_destructor kills it, removes from list */ talloc_free(ctdb->vacuumers); }