Why does chrome run two zygote processes?

2,048 views
Skip to first unread message

James Cook

unread,
Feb 3, 2017, 7:45:23 PM2/3/17
to chromium-dev
I'm debugging a shutdown hang so I've been looking at ps a lot...

Why does chrome on Linux and on Chrome OS run two zygote processes?


It looks like zygote A is the parent of nacl_helper and zygote B, and zygote B is the parent of everything else.

James

Matthew Dempsky

unread,
Feb 3, 2017, 8:09:46 PM2/3/17
to jame...@chromium.org, chromium-dev
There were a handful of limitations with the single-zygote model:

1. All children forked from a zygote share the same address space layout, which somewhat negates the security benefits of ASLR. Ideally, we would periodically respawn new zygotes to re-randomize the address space.
2. Because we have to load shared libraries before sandboxing/forking, all children need to share the same shared libraries. Moreover, if shared libraries are updated while Chrome is running (e.g., Flash component updates), we can't reload them without restarting Chrome.

Around a year ago(?), we refactored Chrome to support multiple zygotes to address these limitations. Unfortunately, we only got as far as having multiple long-lived zygotes before the project was deprioritized.

--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev

Reply all
Reply to author
Forward
0 new messages