To clearly state the issue:
1. the leader of the process group for the app using oxide is sent STOP by the Unity appmgr (application lifecycle). Because the app is started via upstart, the appmgr sends SIGSTOP to -<pid>, ie the process group and the process group leader and all children (ie, the oxide processes) are stopped. This all works correctly as Chris stated
2. low memory killer (android) kills a pid (kernel OOM could also do this), possibly (often?) the process group leader
3. since the process group leader is gone, the appmgr does not resume the oxide child processes, leaving them hanging around
Two things seem to be happening here
1. OOM is called more often with webapp-container using oxide than with qtwebkit
2. appmgr is not cleaning up the killed processes
For '1', alex-abreu stated that for compatibility with 13.10 webapps in the store, webapp-container/webbrowser-app loads *both* qtwebkit and oxide and detects which to use at runtime. This is likely the cause for the OOM
For '2', appmgr needs to be a little smarter and notice that if the leader is killed, the other processes in the process group need to also be killed. There are a couple of ways to do this, the merits of which are being discussed.
To clearly state the issue:
1. the leader of the process group for the app using oxide is sent STOP by the Unity appmgr (application lifecycle). Because the app is started via upstart, the appmgr sends SIGSTOP to -<pid>, ie the process group and the process group leader and all children (ie, the oxide processes) are stopped. This all works correctly as Chris stated
2. low memory killer (android) kills a pid (kernel OOM could also do this), possibly (often?) the process group leader
3. since the process group leader is gone, the appmgr does not resume the oxide child processes, leaving them hanging around
Two things seem to be happening here
1. OOM is called more often with webapp-container using oxide than with qtwebkit
2. appmgr is not cleaning up the killed processes
For '1', alex-abreu stated that for compatibility with 13.10 webapps in the store, webapp- container/ webbrowser- app loads *both* qtwebkit and oxide and detects which to use at runtime. This is likely the cause for the OOM
For '2', appmgr needs to be a little smarter and notice that if the leader is killed, the other processes in the process group need to also be killed. There are a couple of ways to do this, the merits of which are being discussed.