The virCond of the remote_thread_call struct was leaked in some places. This results in leaking the underlying mutex. Which in turn leaks a handle on Windows. Reported by Aliaksandr Chabatar and Ihar Smertsin. --- See https://www.redhat.com/archives/libvir-list/2011-March/msg00789.html for the report. src/remote/remote_driver.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 82e094b..8aa8801 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -8609,6 +8609,7 @@ remoteStreamPacket(virStreamPtr st, xdr_destroy (&xdr); ret = remoteIO(st->conn, priv, 0, thiscall); + ignore_value(virCondDestroy(&thiscall->cond)); VIR_FREE(thiscall); if (ret < 0) return -1; @@ -8617,6 +8618,7 @@ remoteStreamPacket(virStreamPtr st, error: xdr_destroy (&xdr); + ignore_value(virCondDestroy(&thiscall->cond)); VIR_FREE(thiscall); return -1; } @@ -8746,6 +8748,7 @@ remoteStreamRecv(virStreamPtr st, } ret = remoteIO(st->conn, priv, 0, thiscall); + ignore_value(virCondDestroy(&thiscall->cond)); VIR_FREE(thiscall); if (ret < 0) goto cleanup; @@ -9719,6 +9722,7 @@ prepareCall(struct private_data *priv, error: xdr_destroy (&xdr); + ignore_value(virCondDestroy(&rv->cond)); VIR_FREE(rv); return NULL; } @@ -10818,6 +10822,7 @@ call (virConnectPtr conn, struct private_data *priv, } rv = remoteIO(conn, priv, flags, thiscall); + ignore_value(virCondDestroy(&thiscall->cond)); VIR_FREE(thiscall); return rv; } -- 1.7.0.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list