diff --git a/src/box/applier.cc b/src/box/applier.cc
index c8c818ccb41a3c645960b5e7927a8d450f2e1122..bb6d8100014f9219ab46cf38f49ba65d262a8f44 100644
--- a/src/box/applier.cc
+++ b/src/box/applier.cc
@@ -381,7 +381,7 @@ applier_start(struct applier *applier, struct recovery *r)
 		say_crit("starting replication from %s", uri);
 	snprintf(name, sizeof(name), "applier/%s", uri);
 
-	struct fiber *f = fiber_new(name, applier_f);
+	struct fiber *f = fiber_new_xc(name, applier_f);
 	/**
 	 * So that we can safely grab the status of the
 	 * fiber any time we want.
diff --git a/src/box/recovery.cc b/src/box/recovery.cc
index 67726e8bc5c7d417165d49cc9c11b01d509e7c8f..deb5d53225a8ed00717a20fb4980ee16a5619ef0 100644
--- a/src/box/recovery.cc
+++ b/src/box/recovery.cc
@@ -533,7 +533,7 @@ recovery_follow_local(struct recovery *r, const char *name,
 	 * Start 'hot_standby' background fiber to follow xlog changes.
 	 */
 	assert(r->watcher == NULL);
-	r->watcher = fiber_new(name, recovery_follow_f);
+	r->watcher = fiber_new_xc(name, recovery_follow_f);
 	fiber_set_joinable(r->watcher, true);
 	fiber_start(r->watcher, r, wal_dir_rescan_delay);
 }
diff --git a/src/coio.cc b/src/coio.cc
index ac480a63a8e36916d2af138a6dd7c93b2b50ab90..911e1da5f85087bff76b0d8cc48f97f90d1092ff 100644
--- a/src/coio.cc
+++ b/src/coio.cc
@@ -608,7 +608,7 @@ coio_service_on_accept(struct evio_service *evio_service,
 
 	try {
 		iobuf = iobuf_new();
-		f = fiber_new(fiber_name, service->handler);
+		f = fiber_new_xc(fiber_name, service->handler);
 	} catch (struct error *e) {
 		error_log(e);
 		say_error("can't create a handler fiber, dropping client connection");
diff --git a/src/fiber.h b/src/fiber.h
index b96b1a113c2546aa0f4f75bdd38a2627eb55d405..6bf683a54be0edc13aed052482170f0cba74758b 100644
--- a/src/fiber.h
+++ b/src/fiber.h
@@ -521,7 +521,7 @@ diag_raise(void)
 }
 
 static inline struct fiber *
-fiber_new(const char *name, fiber_func func)
+fiber_new_xc(const char *name, fiber_func func)
 {
 	struct fiber *f = fiber_new_nothrow(name, func);
 	if (f == NULL) {
diff --git a/src/lua/fiber.cc b/src/lua/fiber.cc
index e1d7da5dbb852b4c0fe5b0279f9e7bbc9d2d3125..fc9c0635be5d06374764a235b30b8fcd6e409157 100644
--- a/src/lua/fiber.cc
+++ b/src/lua/fiber.cc
@@ -317,7 +317,7 @@ lbox_fiber_create(struct lua_State *L)
 		tnt_raise(LuajitError, L);
 	}
 
-	struct fiber *f = fiber_new("lua", box_lua_fiber_run);
+	struct fiber *f = fiber_new_xc("lua", box_lua_fiber_run);
 	/* Not a system fiber. */
 	struct lua_State *child_L = lua_newthread(L);
 	int coro_ref = luaL_ref(L, LUA_REGISTRYINDEX);
diff --git a/src/lua/init.cc b/src/lua/init.cc
index 7195cc83d8157428dff1bf94c46eb6781278ae4e..8b9b9bf56ab1935bd5b1d997c05b2dcc7da47580 100644
--- a/src/lua/init.cc
+++ b/src/lua/init.cc
@@ -507,7 +507,7 @@ tarantool_lua_run_script(char *path, int argc, char **argv)
 	 * To work this problem around we must run init script in
 	 * a separate fiber.
 	 */
-	script_fiber = fiber_new(title, run_script);
+	script_fiber = fiber_new_xc(title, run_script);
 	fiber_start(script_fiber, tarantool_L, path, argc, argv);
 
 	/*
diff --git a/src/main.cc b/src/main.cc
index ccce27a44da4f0424d4beb6472b8ebf1d87ee9b3..71a908a07f305dc15e45b3e4474a02e2e1d85d75 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -146,7 +146,7 @@ sig_snapshot(ev_loop * /* loop */, struct ev_signal * /* w */,
 			" the signal is ignored");
 		return;
 	}
-	fiber_start(fiber_new("snapshot", (fiber_func)box_snapshot));
+	fiber_start(fiber_new_xc("snapshot", (fiber_func)box_snapshot));
 }
 
 static void
diff --git a/test/unit/coio.cc b/test/unit/coio.cc
index e1f2a6a0ab711fe88ccf2933c31cdd0512a32a3c..5955d33bfda3ee7fa03340ab842703b32c4c3ef6 100644
--- a/test/unit/coio.cc
+++ b/test/unit/coio.cc
@@ -25,7 +25,7 @@ stat_notify_test(FILE *f, const char *filename)
 {
 	header();
 
-	struct fiber *touch = fiber_new("touch", touch_f);
+	struct fiber *touch = fiber_new_xc("touch", touch_f);
 	fiber_start(touch, f);
 	ev_stat stat;
 	note("filename: %s", filename);
@@ -65,7 +65,7 @@ int main()
 {
 	memory_init();
 	fiber_init(fiber_cxx_invoke);
-	struct fiber *test = fiber_new("coio_stat", main_f);
+	struct fiber *test = fiber_new_xc("coio_stat", main_f);
 	fiber_wakeup(test);
 	ev_run(loop(), 0);
 	fiber_free();
diff --git a/test/unit/fiber.cc b/test/unit/fiber.cc
index 99918c32cc90a6d0eb4b0960416390d543128667..8921b864eb3ba78dbe518769c33af6bdb159c784 100644
--- a/test/unit/fiber.cc
+++ b/test/unit/fiber.cc
@@ -47,19 +47,19 @@ fiber_join_test()
 {
 	header();
 
-	struct fiber *fiber= fiber_new("join", noop_f);
+	struct fiber *fiber = fiber_new_xc("join", noop_f);
 	fiber_set_joinable(fiber, true);
 	fiber_wakeup(fiber);
 	fiber_join(fiber);
 
-	fiber = fiber_new("cancel", cancel_f);
+	fiber = fiber_new_xc("cancel", cancel_f);
 	fiber_set_joinable(fiber, true);
 	fiber_wakeup(fiber);
 	fiber_sleep(0);
 	fiber_cancel(fiber);
 	fiber_join(fiber);
 
-	fiber = fiber_new("exception", exception_f);
+	fiber = fiber_new_xc("exception", exception_f);
 	fiber_set_joinable(fiber, true);
 	fiber_wakeup(fiber);
 	try {
@@ -74,7 +74,7 @@ fiber_join_test()
 	 * A fiber which is using exception should not
 	 * push them up the stack.
 	 */
-	fiber = fiber_new("no_exception", no_exception_f);
+	fiber = fiber_new_xc("no_exception", no_exception_f);
 	fiber_set_joinable(fiber, true);
 	fiber_wakeup(fiber);
 	fiber_join(fiber);
@@ -82,7 +82,7 @@ fiber_join_test()
 	 * Trying to cancel a dead joinable cancellable fiber lead to
 	 * a crash, because cancel would try to schedule it.
 	 */
-	fiber = fiber_new("cancel_dead", cancel_dead_f);
+	fiber = fiber_new_xc("cancel_dead", cancel_dead_f);
 	fiber_set_joinable(fiber, true);
 	fiber_wakeup(fiber);
 	/** Let the fiber schedule */
@@ -106,7 +106,7 @@ int main()
 {
 	memory_init();
 	fiber_init(fiber_cxx_invoke);
-	struct fiber *main = fiber_new("main", main_f);
+	struct fiber *main = fiber_new_xc("main", main_f);
 	fiber_wakeup(main);
 	ev_run(loop(), 0);
 	fiber_free();
diff --git a/test/unit/fiber_stress.cc b/test/unit/fiber_stress.cc
index ed7e4dcd5f408d0b6ee7c0b2cf1e8ce55a9aa8f0..927e4d14b5891866a0056e081df2c77a5fdb31fa 100644
--- a/test/unit/fiber_stress.cc
+++ b/test/unit/fiber_stress.cc
@@ -18,7 +18,7 @@ void benchmark_f(va_list ap)
 {
 	struct fiber *fibers[FIBERS];
 	for (int i = 0; i < FIBERS; i++) {
-		fibers[i] = fiber_new("yield-wielder", yield_f);
+		fibers[i] = fiber_new_xc("yield-wielder", yield_f);
 		fiber_wakeup(fibers[i]);
 	}
 	/** Wait for fibers to die. */
@@ -33,7 +33,7 @@ int main()
 {
 	memory_init();
 	fiber_init(fiber_cxx_invoke);
-	struct fiber *benchmark = fiber_new("benchmark", benchmark_f);
+	struct fiber *benchmark = fiber_new_xc("benchmark", benchmark_f);
 	fiber_wakeup(benchmark);
 	ev_run(loop(), 0);
 	fiber_free();
diff --git a/test/unit/ipc.cc b/test/unit/ipc.cc
index eaded76c0f2a0b76f64643c048d35662fb27e23d..94b5f2a757a3da433e03d4f389be62224373553f 100644
--- a/test/unit/ipc.cc
+++ b/test/unit/ipc.cc
@@ -89,7 +89,7 @@ int main()
 {
 	memory_init();
 	fiber_init(fiber_c_invoke);
-	struct fiber *main= fiber_new("main", main_f);
+	struct fiber *main= fiber_new_xc("main", main_f);
 	fiber_wakeup(main);
 	ev_run(loop(), 0);
 	fiber_free();
diff --git a/test/unit/ipc_stress.cc b/test/unit/ipc_stress.cc
index f44849e5f2debe1883914b805265bdbed073bb4b..64a0cc17d28dc8f4f0edf4e2d13c267204d79658 100644
--- a/test/unit/ipc_stress.cc
+++ b/test/unit/ipc_stress.cc
@@ -30,9 +30,9 @@ pop_f(va_list ap)
 void main_f(va_list ap)
 {
 	header();
-	struct fiber *push = fiber_new("push_f", push_f);
+	struct fiber *push = fiber_new_xc("push_f", push_f);
 	fiber_set_joinable(push, true);
-	struct fiber *pop = fiber_new("pop_f", pop_f);
+	struct fiber *pop = fiber_new_xc("pop_f", pop_f);
 	fiber_set_joinable(pop, true);
 	struct ipc_channel *channel = ipc_channel_new(1);
 	fiber_start(push, channel);
@@ -48,7 +48,7 @@ int main()
 {
 	memory_init();
 	fiber_init(fiber_c_invoke);
-	struct fiber *main= fiber_new("main", main_f);
+	struct fiber *main= fiber_new_xc("main", main_f);
 	fiber_wakeup(main);
 	ev_run(loop(), 0);
 	fiber_free();