diff --git a/lib/libev.c b/lib/libev.c
index 40db6ed2a1e328e0303e1305e81c72bcbaf94f5d..43c53d96a52afce6bf3f3a63acbd1580629495aa 100644
--- a/lib/libev.c
+++ b/lib/libev.c
@@ -138,6 +138,9 @@ lws_libev_destroyloop(struct lws_context *context, int tsi)
 	if (!(context->options & LWS_SERVER_OPTION_LIBEV))
 		return;
 
+	if (!pt->io_loop_ev)
+		return;
+
 	ev_io_stop(pt->io_loop_ev, &pt->w_accept.ev_watcher);
 	if (context->use_ev_sigint)
 		ev_signal_stop(pt->io_loop_ev,
diff --git a/lib/libuv.c b/lib/libuv.c
index e3d68c668712013e5433b954005532be535cb4fa..461dc3eaef8c03c05aa9f55321b8ebb257779d52 100644
--- a/lib/libuv.c
+++ b/lib/libuv.c
@@ -124,6 +124,9 @@ lws_libuv_destroyloop(struct lws_context *context, int tsi)
 	if (!(context->options & LWS_SERVER_OPTION_LIBUV))
 		return;
 
+	if (!pt->io_loop_uv)
+		return;
+
 	if (context->use_ev_sigint)
 		uv_signal_stop(&pt->w_sigint.uv_watcher);
 	for (m = 0; m < ARRAY_SIZE(sigs); m++)