Every interfaces tries to launch the sage-cleaner. If it is already 
running, the newly-forked sage-cleaner quits immediately. But there is 
nobody reaping the child, so a zombie remains. 

The standard solutions are either 
1) waitpid in the parent e.g. whenever a new interface is created, 
2) double fork, then the sage-cleaner would be the grandchild adopted by 
init 
3) SIGCHLD signal handler, which complicates further fork()s of sage


On Monday, February 22, 2016 at 8:27:55 PM UTC+1, William wrote:
>
> It depends on how Sage exits.  If it exists properly then yes, they 
> are killed.  But Sage could exit by being "kill -9'" or by segfaulting 
> or something else.  Even then, it is important for the things Sage 
> spawned to be killed.


IMHO an overall better design would be to have a monitor process for every 
spawned sub-process instead of sage-cleaner being responsible for processes 
that are not its direct children. The current solution is definitely racy 
if there is pid wraparound.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to