diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-07-19 17:20:51 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-07-19 17:20:51 -0700 |
| commit | fa24bad0f7f82b4718cc2f13f60fcdd9b0cf86fe (patch) | |
| tree | 287fdb1f831bfdfdf34b1bc2c56e8489f3ba9ba9 /src/protocol/pubsub/pub.c | |
| parent | c726f93041b8dcd085c88144f2c13a2ac6fe58ad (diff) | |
| download | nng-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/pub.c')
| -rw-r--r-- | src/protocol/pubsub/pub.c | 2 |
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); } |
