summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilian Wolff <milian.wolff@kdab.com>2018-04-24 15:30:59 +0200
committerMilian Wolff <mail@milianw.de>2018-05-04 23:13:26 +0200
commitb256722d49a63719c69c0416eba9163a4d069584 (patch)
treee825ab16a97dca077adf9719a3865bce020845e1
parent2bb51aa4fd46a61c4702f05a5c93e811a5e112ef (diff)
downloadlibunwind-b256722d49a63719c69c0416eba9163a4d069584.tar.gz
Do not try to close invalid fds
This was found by Valgrind: ==8330== Warning: invalid file descriptor -1 in syscall close() ==8330== at 0x504B9F4: close (in /usr/lib/libpthread-2.26.so) ==8330== by 0x40914DA: open_pipe (Ginit.c:82) ==8330== by 0x40914DA: _ULx86_64_init_mem_validate (Ginit.c:154) ==8330== by 0x4090CFE: _ULx86_64_init (Gglobal.c:93) ==8330== by 0x4090A8C: _ULx86_64_set_caching_policy (Gset_caching_policy.c:32)
-rw-r--r--src/x86_64/Ginit.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/x86_64/Ginit.c b/src/x86_64/Ginit.c
index b7e8e462..28e096fc 100644
--- a/src/x86_64/Ginit.c
+++ b/src/x86_64/Ginit.c
@@ -78,9 +78,10 @@ static int mem_validate_pipe[2] = {-1, -1};
static inline void
open_pipe (void)
{
- /* ignore errors for closing invalid fd's */
- close (mem_validate_pipe[0]);
- close (mem_validate_pipe[1]);
+ if (mem_validate_pipe[0] != -1)
+ close (mem_validate_pipe[0]);
+ if (mem_validate_pipe[1] != -1)
+ close (mem_validate_pipe[1]);
pipe2 (mem_validate_pipe, O_CLOEXEC | O_NONBLOCK);
}