aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/pubsub
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-07-19 17:20:51 -0700
committerGarrett D'Amore <garrett@damore.org>2017-07-19 17:20:51 -0700
commitfa24bad0f7f82b4718cc2f13f60fcdd9b0cf86fe (patch)
tree287fdb1f831bfdfdf34b1bc2c56e8489f3ba9ba9 /src/protocol/pubsub
parentc726f93041b8dcd085c88144f2c13a2ac6fe58ad (diff)
downloadnng-fa24bad0f7f82b4718cc2f13f60fcdd9b0cf86fe.tar.gz
nng-fa24bad0f7f82b4718cc2f13f60fcdd9b0cf86fe.tar.bz2
nng-fa24bad0f7f82b4718cc2f13f60fcdd9b0cf86fe.zip
Crash on close again.
This one is caused by us deallocating the msg queue before we stop all asynchronous I/O operations; consequently we can wind up with a thread trying to access a msg queue after it has been destroyed. A lesson here is that nni_aio_fini() needs to be treated much like nni_thr_fini() - you should do this *before* deallocating anything that callback functions might be referencing.
Diffstat (limited to 'src/protocol/pubsub')
-rw-r--r--src/protocol/pubsub/pub.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/protocol/pubsub/pub.c b/src/protocol/pubsub/pub.c
index 508ab7ce..316cbf50 100644
--- a/src/protocol/pubsub/pub.c
+++ b/src/protocol/pubsub/pub.c
@@ -101,10 +101,10 @@ nni_pub_pipe_fini(void *arg)
{
nni_pub_pipe *pp = arg;
- nni_msgq_fini(pp->sendq);
nni_aio_fini(&pp->aio_getq);
nni_aio_fini(&pp->aio_send);
nni_aio_fini(&pp->aio_recv);
+ nni_msgq_fini(pp->sendq);
NNI_FREE_STRUCT(pp);
}