diff --git a/src/box/lua/call.cc b/src/box/lua/call.cc
index 0319da61635eab86a677a1a6f8b508f28f1c412b..6d7a6289be0187311a26143121a88aae064ce705 100644
--- a/src/box/lua/call.cc
+++ b/src/box/lua/call.cc
@@ -481,7 +481,10 @@ struct SetuidGuard
 SetuidGuard::SetuidGuard(const char *name, uint32_t name_len,
 			 struct user *user, uint8_t access)
 	:setuid(false)
+	,orig_auth_token(GUEST) /* silence gnu warning */
+	,orig_uid(GUEST)
 {
+
 	/*
 	 * If the user has universal access, don't bother with setuid.
 	 * No special check for ADMIN user is necessary
@@ -516,7 +519,7 @@ SetuidGuard::SetuidGuard(const char *name, uint32_t name_len,
 	}
 	if (func->setuid) {
 		/** Remember and change the current user id. */
-		setuid = func->setuid;
+		setuid = true;
 		orig_auth_token = user->auth_token;
 		orig_uid = user->uid;
 		session_set_user(session(), func->auth_token, func->uid);
diff --git a/src/find_path.c b/src/find_path.c
index 749596573d466f8fbe11c683cbae1675cb0e5816..4c8e8fce3aed8960d7211ba3d3d33e438c8bddad 100644
--- a/src/find_path.c
+++ b/src/find_path.c
@@ -41,7 +41,8 @@ find_path(const char *argv0)
 		if (rc == -1)
 			snprintf(buf, sizeof(buf) - 1, "%s", getenv("_"));
 	}
-	realpath(buf, path);
+	if (realpath(buf, path) == NULL)
+		snprintf(path, sizeof(path), "%s", buf);
 	found = true;
 	return path;
 }
diff --git a/src/fiob.c b/src/fiob.c
index b5800cbf3ac64db60ad7a5cb3f97690adfd2c230..5b767deedee4671051547bc0c0e5a2219d45485b 100644
--- a/src/fiob.c
+++ b/src/fiob.c
@@ -274,8 +274,8 @@ fiob_open(const char *path, const char *mode)
 		flags |= O_DIRECT;
 #endif
 		bsize = O_DIRECT_BSIZE;
-		posix_memalign(&buf, 4096, bsize);
-		if (!buf) {
+		int res = posix_memalign(&buf, 4096, bsize);
+		if (res || !buf) {
 			errno = ENOMEM;
 			return NULL;
 		}
diff --git a/src/lib/small/slab_arena.c b/src/lib/small/slab_arena.c
index 0d3a6e301e10f9466b6a31474c819150686d15be..5e54359785df3eb017dc821041f850943c79e1df 100644
--- a/src/lib/small/slab_arena.c
+++ b/src/lib/small/slab_arena.c
@@ -44,7 +44,7 @@ munmap_checked(void *addr, size_t size)
 {
 	if (munmap(addr, size)) {
 		char buf[64];
-		strerror_r(errno, buf, sizeof(buf));
+		(void) strerror_r(errno, buf, sizeof(buf));
 		fprintf(stderr, "Error in munmap(%p, %zu): %s\n",
 			addr, size, buf);
 		assert(false);
diff --git a/src/random.c b/src/random.c
index 2b4e6679a942de2dd7b9662305904635c952658a..103e3af22ff43f6ad5cb283ecb4d626d4dc483db 100644
--- a/src/random.c
+++ b/src/random.c
@@ -54,7 +54,8 @@ random_init(void)
 	if (flags != -1)
 		fcntl(rfd, F_SETFD, flags | FD_CLOEXEC);
 
-	read(rfd, &seed, sizeof(seed));
+	ssize_t res = read(rfd, &seed, sizeof(seed));
+	(void) res;
 srand:
 	srandom(seed);
 	srand(seed);
diff --git a/src/tarantool.cc b/src/tarantool.cc
index c7c4830871c438ddc61351da2d4ce48f5b52749a..d2540599555ca4793b01a3d09aac742add4174a4 100644
--- a/src/tarantool.cc
+++ b/src/tarantool.cc
@@ -506,7 +506,8 @@ tarantool_free(void)
 	if (time(NULL) == 0) {
 		/* never executed */
 		extern void *ffi_symbols[];
-		write(0, ffi_symbols, 0);
+		ssize_t res = write(0, ffi_symbols, 0);
+		(void) res;
 	}
 }
 
diff --git a/test/unit/fiob.c b/test/unit/fiob.c
index aa66d1187cb66f11d0b275259ad3834f2d75e96e..02dce5f7721297bc19f1953342a317f802641ddc 100644
--- a/test/unit/fiob.c
+++ b/test/unit/fiob.c
@@ -165,7 +165,8 @@ main(void)
 		done = 0;
 		for (i = 0; i < 1000000 + 1; i++) {
 			buf[0] = 0;
-			fgets(buf, 4096, f);
+			char *res = fgets(buf, 4096, f);
+			(void) res;
 			if (strcmp(buf, "Hello, world\n") == 0)
 				done++;
 		}
@@ -195,12 +196,16 @@ main(void)
 		done = 0;
 		for (i = 0; i < 1000000 + 1; i++) {
 			memset(buf, 0, 4096);
-			fgets(buf, 4096, f);
+			char *res = fgets(buf, 4096, f);
+			(void) res;
 			if (strcmp(buf, "Hello, world\n") == 0)
 				done++;
-/*                         else */
-/*                                 fprintf(stderr, "#   wrong line %zu: %s", */
-/*                                         i, buf); */
+#if 0
+			else {
+				fprintf(stderr, "#   wrong line %zu: %s",
+					i, buf);
+			}
+#endif
 		}
 		is(done, 1000000 + 1, "all records were written properly");