aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/survey/respond.c
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/survey/respond.c
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/survey/respond.c')
-rw-r--r--src/protocol/survey/respond.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/protocol/survey/respond.c b/src/protocol/survey/respond.c
index 685f39fd..4a4c8741 100644
--- a/src/protocol/survey/respond.c
+++ b/src/protocol/survey/respond.c
@@ -160,11 +160,11 @@ nni_resp_pipe_fini(void *arg)
{
nni_resp_pipe *ppipe = arg;
- nni_msgq_fini(ppipe->sendq);
nni_aio_fini(&ppipe->aio_putq);
nni_aio_fini(&ppipe->aio_getq);
nni_aio_fini(&ppipe->aio_send);
nni_aio_fini(&ppipe->aio_recv);
+ nni_msgq_fini(ppipe->sendq);
NNI_FREE_STRUCT(ppipe);
}