From 023dcf42210b94345195fd97c7f673afb6ec42ce Mon Sep 17 00:00:00 2001 From: Imre Vadasz Date: Thu, 15 Jan 2015 12:04:10 +0100 Subject: [PATCH] truss(1): Retry opening /proc/%d/mem when errno == EAGAIN. --- usr.bin/truss/setup.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/usr.bin/truss/setup.c b/usr.bin/truss/setup.c index faff77f60b..a108c210a5 100644 --- a/usr.bin/truss/setup.c +++ b/usr.bin/truss/setup.c @@ -113,7 +113,9 @@ setup_and_wait(char *command[]) { asprintf(&buf, "%s/%d/mem", procfs_path, pid); if (buf == NULL) err(1, "Out of memory"); - fd = open(buf, O_RDWR); + do { + fd = open(buf, O_RDWR); + } while(fd == -1 && errno == EAGAIN); free(buf); if (fd == -1) err(5, "cannot open %s", buf); @@ -144,7 +146,9 @@ start_tracing(int pid, int flags) { asprintf(&buf, "%s/%d/mem", procfs_path, pid); if (buf == NULL) err(1, "Out of memory"); - fd = open(buf, O_RDWR); + do { + fd = open(buf, O_RDWR); + } while(fd == -1 && errno == EAGAIN); free(buf); if (fd == -1) { /* -- 2.41.0