diff --git a/src/lib/core/fiber.c b/src/lib/core/fiber.c
index dde556b85d9d110dab140c3969fb955a92f1750c..a7dc665ff3b80c6eb410c0963d813eb39240f4d6 100644
--- a/src/lib/core/fiber.c
+++ b/src/lib/core/fiber.c
@@ -926,7 +926,11 @@ fiber_stack_create(struct fiber *fiber, size_t stack_size)
 						  (char *)fiber->stack +
 						  fiber->stack_size);
 
-	fiber_mprotect(guard, page_size, PROT_NONE);
+	if (fiber_mprotect(guard, page_size, PROT_NONE)) {
+		fiber_stack_destroy(fiber, &cord()->slabc);
+		return -1;
+	}
+
 	fiber_stack_watermark_create(fiber);
 	return 0;
 }