From a86e2b506ad71eba0bc85e015424fa44f2a9044f Mon Sep 17 00:00:00 2001 From: Giacomo Tesio Date: Sun, 26 Nov 2017 23:57:52 +0100 Subject: [PATCH] sys/ctrace: try to restart stopped processes (why does not work?) --- sys/src/cmd/sys/ctrace.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/sys/src/cmd/sys/ctrace.c b/sys/src/cmd/sys/ctrace.c index 7e9037c..94bd954 100644 --- a/sys/src/cmd/sys/ctrace.c +++ b/sys/src/cmd/sys/ctrace.c @@ -71,11 +71,11 @@ reader(void *v) if ((r.tfd = open(s->buf, OREAD)) < 0) die(&r); +StartReading: cwrite(&r, "stop", 0); cwrite(&r, "startsyscall", 0); -StartReading: - wakeup = awake(500); + wakeup = awake(750); while((n = pread(r.tfd, s->buf, sizeof(s->buf)-1, 0)) > 0){ forgivewkp(wakeup); if(strstr(s->buf, " rfork ") != nil){ @@ -100,9 +100,13 @@ StartReading: cwrite(&r, "startsyscall", 1); wakeup = awake(500); } - if(n < 0 && awakened(wakeup)){ - cwrite(&r, "startsyscall", 0); - goto StartReading; + if(awakened(wakeup)){ + rf = smprint("/proc/%d/status", r.pid); + if(access(rf, AEXIST) == 0){ + free(rf); + goto StartReading; + } + free(rf); } die(&r); }