Problem: read-after-free when closing socket

Solution: use socket object's mutex before the send_reap() call that
might deallocate it
This commit is contained in:
Luca Boccassi
2016-05-05 17:47:16 +01:00
parent e9380b5a1a
commit 17132f0387

View File

@@ -1290,12 +1290,13 @@ int zmq::socket_base_t::close ()
// Mark the socket as dead
tag = 0xdeadbeef;
EXIT_MUTEX ();
// Transfer the ownership of the socket from this application thread
// to the reaper thread which will take care of the rest of shutdown
// process.
send_reap (this);
EXIT_MUTEX ();
return 0;
}