sys/ctrace: try to restart stopped processes (why does not work?)
This commit is contained in:
parent
f6e3784639
commit
a86e2b506a
|
@ -71,11 +71,11 @@ reader(void *v)
|
||||||
if ((r.tfd = open(s->buf, OREAD)) < 0)
|
if ((r.tfd = open(s->buf, OREAD)) < 0)
|
||||||
die(&r);
|
die(&r);
|
||||||
|
|
||||||
|
StartReading:
|
||||||
cwrite(&r, "stop", 0);
|
cwrite(&r, "stop", 0);
|
||||||
cwrite(&r, "startsyscall", 0);
|
cwrite(&r, "startsyscall", 0);
|
||||||
|
|
||||||
StartReading:
|
wakeup = awake(750);
|
||||||
wakeup = awake(500);
|
|
||||||
while((n = pread(r.tfd, s->buf, sizeof(s->buf)-1, 0)) > 0){
|
while((n = pread(r.tfd, s->buf, sizeof(s->buf)-1, 0)) > 0){
|
||||||
forgivewkp(wakeup);
|
forgivewkp(wakeup);
|
||||||
if(strstr(s->buf, " rfork ") != nil){
|
if(strstr(s->buf, " rfork ") != nil){
|
||||||
|
@ -100,9 +100,13 @@ StartReading:
|
||||||
cwrite(&r, "startsyscall", 1);
|
cwrite(&r, "startsyscall", 1);
|
||||||
wakeup = awake(500);
|
wakeup = awake(500);
|
||||||
}
|
}
|
||||||
if(n < 0 && awakened(wakeup)){
|
if(awakened(wakeup)){
|
||||||
cwrite(&r, "startsyscall", 0);
|
rf = smprint("/proc/%d/status", r.pid);
|
||||||
goto StartReading;
|
if(access(rf, AEXIST) == 0){
|
||||||
|
free(rf);
|
||||||
|
goto StartReading;
|
||||||
|
}
|
||||||
|
free(rf);
|
||||||
}
|
}
|
||||||
die(&r);
|
die(&r);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue