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/survey/respond.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/protocol/survey/respond.c') 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); } -- cgit v1.2.3-70-g09d2