diff --git a/bridges/bridge_softmix.c b/bridges/bridge_softmix.c
index 4583435a08d471d7dbab34ac9d862da445779aa6..c1b3618c990d0204f1d607b0c6694c9b816a9362 100644
--- a/bridges/bridge_softmix.c
+++ b/bridges/bridge_softmix.c
@@ -844,7 +844,9 @@ static int softmix_mixing_loop(struct ast_bridge *bridge)
 			 * all the memcpys used during this process depend on this assumption.  Rather
 			 * than checking this over and over again through out the code, this single
 			 * verification is done on each iteration. */
-			ast_log(LOG_WARNING, "Conference mixing error, requested mixing length greater than mixing buffer.\n");
+			ast_log(LOG_WARNING,
+				"Bridge %s: Conference mixing error, requested mixing length greater than mixing buffer.\n",
+				bridge->uniqueid);
 			goto softmix_cleanup;
 		}
 
@@ -944,7 +946,8 @@ static int softmix_mixing_loop(struct ast_bridge *bridge)
 		/* Wait for the timing source to tell us to wake up and get things done */
 		ast_waitfor_n_fd(&timingfd, 1, &timeout, NULL);
 		if (ast_timer_ack(timer, 1) < 0) {
-			ast_log(LOG_ERROR, "Failed to acknowledge timer in softmix bridge.\n");
+			ast_log(LOG_ERROR, "Bridge %s: Failed to acknowledge timer in softmix.\n",
+				bridge->uniqueid);
 			ast_bridge_lock(bridge);
 			goto softmix_cleanup;
 		}
@@ -1080,6 +1083,10 @@ static void softmix_bridge_destroy(struct ast_bridge *bridge)
 	softmix_data->thread = AST_PTHREADT_NULL;
 	ast_mutex_unlock(&softmix_data->lock);
 	if (thread != AST_PTHREADT_NULL) {
+		/*
+		 * We cannot use bridge->uniqueid in the message because the
+		 * bridge pointer is likely a dummy from a deferred destruction.
+		 */
 		ast_debug(1, "Waiting for mixing thread to die.\n");
 		pthread_join(thread, NULL);
 	}