diff --git a/src/luv.c b/src/luv.c index 18c01936..cb9c1c7c 100644 --- a/src/luv.c +++ b/src/luv.c @@ -838,6 +838,11 @@ static int loop_gc(lua_State *L) { while (uv_loop_close(loop)) { uv_run(loop, UV_RUN_DEFAULT); } + /* do cleanup in main thread */ + lua_getglobal(L, "_THREAD"); + if (lua_isnil(L, -1)) + luv_work_cleanup(); + lua_pop(L, 1); return 0; } @@ -885,12 +890,6 @@ LUALIB_API int luaopen_luv (lua_State* L) { if (ret < 0) { return luaL_error(L, "%s: %s\n", uv_err_name(ret), uv_strerror(ret)); } - - /* do cleanup in main thread */ - lua_getglobal(L, "_THREAD"); - if (lua_isnil(L, -1)) - atexit(luv_work_cleanup); - lua_pop(L, 1); } // pcall is NULL, luv use default callback routine if (ctx->cb_pcall==NULL) {