Commit Diff


commit - d0bc889a8aa8cd80ec5a048b5825c82bd34edefb
commit + b214663d3454a2f81b418dde4b764f03563c91fb
blob - c43ce797a7cf70932f07e59d547e60dd37d6b299
blob + b8d242c800c721acda452649feb52aab1292279d
--- include/mux.h
+++ include/mux.h
@@ -22,7 +22,7 @@ struct Mux
 	void *aux;	/* for private use by client */
 
 /* private */
-	QLock lk;
+	QLock lk;	/* must be first for muxinit */
 	QLock inlk;
 	QLock outlk;
 	Rendez tagrend;
blob - bc63260249f41bc3b75fd6e1d41d3b3f92f62a69
blob + 2d5074ee1fc11046fffcef403f7d5e4dfb9ba495
--- src/libmux/mux.c
+++ src/libmux/mux.c
@@ -19,7 +19,9 @@ static void dequeue(Mux*, Muxrpc*);
 void
 muxinit(Mux *mux)
 {
+	memset(&mux->lk, 0, sizeof(Mux)-offsetof(Mux, lk));
 	mux->tagrend.l = &mux->lk;
+	mux->rpcfork.l = &mux->lk;
 	mux->sleep.next = &mux->sleep;
 	mux->sleep.prev = &mux->sleep;
 }