From f1b43aeb04df3213adb96151c9764919bb369c45 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Wed, 20 Jan 2021 22:40:23 +0200 Subject: [PATCH] Investigation of Linux freezes #3. --- chronos/transports/stream.nim | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/chronos/transports/stream.nim b/chronos/transports/stream.nim index aae041d..9c09eaf 100644 --- a/chronos/transports/stream.nim +++ b/chronos/transports/stream.nim @@ -274,12 +274,15 @@ proc failPendingWriteQueue(queue: var Deque[StreamVector], vector.writer.fail(error) proc clean(server: StreamServer) {.inline.} = + echo "cleaning server instance" if not(server.loopFuture.finished()): + echo "cleaning server complete()" untrackServer(server) server.loopFuture.complete() if not isNil(server.udata) and GCUserData in server.flags: GC_unref(cast[ref int](server.udata)) GC_unref(server) + echo "clean server exit" proc clean(transp: StreamTransport) {.inline.} = if not(transp.future.finished()): @@ -1639,9 +1642,8 @@ proc close*(server: StreamServer) = ## Please note that release of resources is not completed immediately, to be ## sure all resources got released please use ``await server.join()``. proc continuation(udata: pointer) {.gcsafe.} = - # Stop tracking server - if not(server.loopFuture.finished()): - server.clean() + echo "server close() continuation" + server.clean() let r1 = (server.status == ServerStatus.Stopped) and not(isNil(server.function))