diff --git a/src/box/phia.c b/src/box/phia.c
index ddff372862eae5a7b0c1e23d5859bb4cc03c6e12..9d2f6e1ae5310ee7d3d360c893f3040650c99079 100644
--- a/src/box/phia.c
+++ b/src/box/phia.c
@@ -16471,6 +16471,10 @@ struct phia_service *
 phia_service_new(struct phia_env *env)
 {
 	struct phia_service *srv = ss_malloc(env->r.a, sizeof(struct phia_service));
+	if (srv == NULL) {
+		sr_oom(env->r.e);
+		return NULL;
+	}
 	srv->env = env;
 	sd_cinit(&srv->sdc);
 	return srv;
diff --git a/src/box/phia_engine.cc b/src/box/phia_engine.cc
index ee83fb2d32f33406532d49a96ff3205d5a43752a..70d25097382c13320858568d08cad241c44140da 100644
--- a/src/box/phia_engine.cc
+++ b/src/box/phia_engine.cc
@@ -169,6 +169,8 @@ phia_worker(void *arg)
 {
 	struct phia_env *env = (struct phia_env *) arg;
 	struct phia_service *srv = phia_service_new(env);
+	if (srv == NULL)
+		tnt_raise(OutOfMemory, sizeof(srv), "phia", "service");
 	while (pm_atomic_load_explicit(&worker_pool_run,
 				       pm_memory_order_relaxed)) {
 		int rc = phia_service_do(srv);