> Hello,
>
> I've done some more research on the system. here's what I've found out.
>
> The defunct processes are from the application but these proceses are
> children of the asterisk process.
>
Yes almost always zombies are caused by a bug in the parent process, not
in the child. The parent needs to call wait() to get its status.
A zombie is just a process in the process table that exists until the
parent checks its status with wait, waitpid or something similar. When
the parent dies, init becomes the parent and its good about checking
this so they disappear at that time.
Its my suggestion that you look into asterisk where its calling the agi
and add a wait in there.
A zombie process almost never can be created due to a bug in the child
process (mostly because its only a zomibe after the child has exited and
all the resources it was using are released). Zombies also dont hurt
much since they only use a tiny bit of ram, namely the process table
entry. If you have a max process limit then it may affect that count I
am unsure if it includes the state in its limits.
--
Trixter http://www.0xdecafbad.com Bret McDanel
pgp key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8AE5C721
No comments:
Post a Comment