From c9cc2aa53d3adcef813d56107058d4b261488f66 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Mon, 3 Nov 2014 15:53:58 -0300 Subject: [PATCH] event: Assert that all libuv handles are closed on exit. Travis build will now fail when core files are dumped, so call `abort()` when the event loop is not fully released before exiting. --- src/nvim/os/event.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/nvim/os/event.c b/src/nvim/os/event.c index bfb8a625ef..5a5da5cd63 100644 --- a/src/nvim/os/event.c +++ b/src/nvim/os/event.c @@ -79,12 +79,14 @@ void event_teardown(void) signal_teardown(); input_stop(); input_teardown(); - do { - // This will loop forever if we leave any unclosed handles. Currently it is - // the most reliable way to use travis for verifying the no libuv-related - // bugs(which can be hard to track later) were introduced on a PR. - uv_run(uv_default_loop(), UV_RUN_DEFAULT); - } while (uv_loop_close(uv_default_loop())); + // this last `uv_run` will return after all handles are stopped, it will + // also take care of finishing any uv_close calls made by other *_teardown + // functions. + uv_run(uv_default_loop(), UV_RUN_DEFAULT); + // abort that if we left unclosed handles + if (uv_loop_close(uv_default_loop())) { + abort(); + } } // Wait for some event