diff --git a/core/fiber.m b/core/fiber.m index 0d987b86b8b99021f90999888306254766d0c2cf..6a1d732010875ca3cc4c4de760246404740cdcb2 100644 --- a/core/fiber.m +++ b/core/fiber.m @@ -1062,6 +1062,7 @@ spawn_child(const char *name, int inbox_size, struct tbuf *(*handler) (void *, s /* it is safier to tell libev about fork, even * if child wont' use it. */ ev_default_fork(); + ev_loop(EVLOOP_NONBLOCK); char child_name[sizeof(fiber->name)]; /* diff --git a/core/replication.m b/core/replication.m index f0d1a47b91553396c99dde0f59e25d14917d82eb..693fa4b41ccab41473d6357f0c018626b14fa53a 100644 --- a/core/replication.m +++ b/core/replication.m @@ -186,6 +186,7 @@ replication_prefork() panic("set_nonblock"); } else { ev_default_fork(); + ev_loop(EVLOOP_NONBLOCK); /* child process: spawner */ close(sockpair[0]); /* @@ -453,6 +454,7 @@ spawner_create_replication_relay(int client_sock) if (pid == 0) { ev_default_fork(); + ev_loop(EVLOOP_NONBLOCK); close(spawner.sock); replication_relay_loop(client_sock); } else {