I also experienced this. (I use SageMath 7.0 on Ubuntu 15.10)
I guess this is not specific to sage0. The following code will spawn five
zombie processes.
[a.eval("1") for a in [gp, gap, maxima, sage0, singular]]
By debugging with pdb, I found that something is wrong with
"sage.interfaces.cleaner.start_cleaner".
I do not fully understand the purpose of start_cleaner. But I guess the
parent process must wait until the child process spawned by "os.fork"
exits, otherwise the child process ("sage-cleaner") becomes a zombie
process.
If I replace start_cleaner like this
<https://gist.github.com/stakemori/067e254dc3d2054cf151>, zombie processes
are not spawned.
By the way, I do not understand why calling this function in gp.eval or
gap.eval is necessary, since child processes (such as gp, gap) are killed
when Sage exits.
Sho Takemori
2016年2月19日金曜日 11時52分04秒 UTC+9 Daniel Lännström:
>
> I have noticed that when using the sage0 interface zombie processes remain
> even after running the sage.interfaces.quit.expect_quitall function.
>
> Is this a bug? Is there some way to migrate this?
>
> Here is an example of what I am talking about. Here is the content of the
> file zombie_test.sage
>
> import sage.interfaces.sage0
> import sage.interfaces.quit
>
> def create_new_instances():
> s = sage.interfaces.sage0.Sage()
> s('4')
> del s
>
> print "Create instances"
> create_new_instances()
> raw_input('continue?')
> print "Run expect_quit"
> sage.interfaces.quit.expect_quitall(verbose=True)
> raw_input('continue?')
>
> After running the create_new_instances() function the relevant part of the
> process tree looks like this.
>
> | | | `-bash,7619 /usr/lib/sagemath/local/bin/sage-python
> zombie_test.sage.py
> | | | |-python,7661
> /usr/lib/sagemath/local/bin/sage-cleaner
> | | | `-python,7663 zombie_test.sage.py
> | | | |-python,7668
> /usr/lib/sagemath/local/bin/sage-ipython
> --HistoryManager.hist_file=:memory: ...
> | | | `-(python,7669)
>
> But process 7669 is a zombie!
>
> PID TTY STAT TIME COMMAND
> 7669 pts/6 Z 0:00 [python] <defunct>
>
> Next running sage.interfaces.quit.expect_quitall outputs
>
> Exiting Sage with PID 7668 running
> /usr/lib/sagemath/local/bin/sage-ipython
> --HistoryManager.hist_file=:memory: --colors=NoColor
>
> Indeed process 7668 has been removed but process 7669 remains and the
> process tree looks like this:
>
> | | | `-bash,7619 /usr/lib/sagemath/local/bin/sage-python
> zombie_test.sage.py
> | | | |-python,7661
> /usr/lib/sagemath/local/bin/sage-cleaner
> | | | `-python,7663 zombie_test.sage.py
> | | | |-(python,7668)
> | | | |-(python,7669)
> | | | `-python,7701 zombie_test.sage.py
>
> In my work I'm running a long executing program and these zombie processes
> are annoying.
>
> Finally some info about my setup:
> Sage Version 6.9, Release Date: 2015-10-10
> Ubuntu MATE 15.10
> Linux kernel 4.2.0-27-generic
>
>
>
>
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.