diff --git a/service/testtimer.lua b/service/testtimer.lua index c6d64f36..e304ae92 100644 --- a/service/testtimer.lua +++ b/service/testtimer.lua @@ -21,3 +21,5 @@ skynet.start(function() skynet.exit() print("Test timer exit") end) + +error "!!!" \ No newline at end of file diff --git a/skynet-src/skynet_mq.c b/skynet-src/skynet_mq.c index 5ab17ca5..ffd6c45c 100644 --- a/skynet-src/skynet_mq.c +++ b/skynet-src/skynet_mq.c @@ -244,8 +244,13 @@ skynet_mq_pushglobal(struct message_queue *queue) { void skynet_mq_mark_release(struct message_queue *q) { + LOCK(q) assert(q->release == 0); q->release = 1; + if (q->in_global != MQ_IN_GLOBAL) { + skynet_globalmq_push(q); + } + UNLOCK(q) } static int diff --git a/skynet-src/skynet_server.c b/skynet-src/skynet_server.c index 8a3639ba..dda09622 100644 --- a/skynet-src/skynet_server.c +++ b/skynet-src/skynet_server.c @@ -126,6 +126,7 @@ skynet_context_new(const char * name, const char *param) { } else { skynet_context_release(ctx); skynet_handle_retire(ctx->handle); + skynet_mq_release(queue); return NULL; } }