From fa24bad0f7f82b4718cc2f13f60fcdd9b0cf86fe Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Wed, 19 Jul 2017 17:20:51 -0700 Subject: 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. --- src/protocol/pubsub/pub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/protocol/pubsub') 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); } -- cgit v1.2.3-70-g09d2