2014-05-21 12:20:42 +02:00
|
|
|
service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server --socket-name=zygote
|
|
|
|
class main
|
2016-05-19 02:40:41 +02:00
|
|
|
priority -20
|
2016-11-02 21:35:12 +01:00
|
|
|
user root
|
2018-01-06 01:16:49 +01:00
|
|
|
group root readproc reserved_disk
|
2014-05-21 12:20:42 +02:00
|
|
|
socket zygote stream 660 root system
|
2019-02-22 20:35:08 +01:00
|
|
|
socket usap_pool_primary stream 660 root system
|
Abort FUSE filesystem when Zygote restarts.
The FUSE filesystem is implemented by a Zygote child. If Zygote dies,
all of its children die along with it, including the FUSE daemon. The
FUSE filesystem is cleaned up automatically whenever the /dev/fuse file
descriptor of the FUSE daemon is closed. However, due to the way the
binder driver holds on to the 'struct files' of processes in the kernel,
the closing of FDs of all of Zygote's children is serialized.
That in turn means that, if a process has a file with dirty pages on
FUSE, and that FD is closed *before* the FUSE FD, the FUSE kernel driver
will happily issue a request to the FUSE daemon to serve that request.
But since the FUSE userspace daemon is already dead, it will never get
served. And because the closing of all FDs is serialized, we will never
close the FUSE fd to unblock this request.
Solve this particular case by manually aborting the FUSE filesystem when
Zygote restarts. Because we now explicitly close the FUSE fd, the FUSE
filesystem will be cleaned up, all outstanding requests to it will be
cancelled, and new ones will be skipped.
Bug: 153411204
Test: kill zygote manually
Change-Id: I2cb6c1a03cc1a932461ff33558894a428ff35180
2020-05-28 16:15:55 +02:00
|
|
|
onrestart exec_background - system system -- /system/bin/vdc volume abort_fuse
|
2014-05-21 12:20:42 +02:00
|
|
|
onrestart write /sys/power/state on
|
2015-10-30 22:17:25 +01:00
|
|
|
onrestart restart audioserver
|
2015-12-04 01:32:12 +01:00
|
|
|
onrestart restart cameraserver
|
2014-05-21 12:20:42 +02:00
|
|
|
onrestart restart media
|
|
|
|
onrestart restart netd
|
2016-12-20 20:28:04 +01:00
|
|
|
onrestart restart wificond
|
2017-02-13 18:32:45 +01:00
|
|
|
writepid /dev/cpuset/foreground/tasks
|
2014-05-21 12:20:42 +02:00
|
|
|
|
2017-02-07 17:08:42 +01:00
|
|
|
service zygote_secondary /system/bin/app_process32 -Xzygote /system/bin --zygote --socket-name=zygote_secondary --enable-lazy-preload
|
2014-05-21 12:20:42 +02:00
|
|
|
class main
|
2016-05-19 02:40:41 +02:00
|
|
|
priority -20
|
2016-11-02 21:35:12 +01:00
|
|
|
user root
|
2018-01-06 01:16:49 +01:00
|
|
|
group root readproc reserved_disk
|
2014-05-21 12:20:42 +02:00
|
|
|
socket zygote_secondary stream 660 root system
|
2019-02-22 20:35:08 +01:00
|
|
|
socket usap_pool_secondary stream 660 root system
|
2014-05-21 12:20:42 +02:00
|
|
|
onrestart restart zygote
|
2016-05-06 01:10:53 +02:00
|
|
|
writepid /dev/cpuset/foreground/tasks
|