No description
Find a file
Tom Cherry 802864c782 init: handle property messages asynchronously #2
A previous change moved property_service into its own thread, since
there was otherwise a deadlock whenever a process called by init would
try to set a property.  This new thread, however, would send a message
via a blocking socket to init for each property that it received,
since init may need to take action depending on which property it is.
Unfortunately, this means that the deadlock is still possible, the
only difference is the socket's buffer must be filled before init deadlocks.

This change, therefore, adds the following:
1) A lock for instructing init to reboot
2) A lock for waiting on properties
3) A lock for queueing new properties

A previous version of this change was reverted and added locks around
all service operations and allowed the property thread to spawn
services directly.  This was complex due to the fact that this code
was not designed to be multi-threaded.  It was reverted due to
apparent issues during reboot.  This change keeps a queue of processes
pending control messages, which it will then handle in the future.  It
is less flexible but safer.

Bug: 146877356
Bug: 148236233
Bug: 150863651
Bug: 151251827
Test: multiple reboot tests, safely restarting hwservicemanager
Change-Id: Ice773436e85d3bf636bb0a892f3f6002bdf996b6
2020-03-12 17:15:07 -07:00
adb Merge "adbd: make libadbd_services cc_library again." 2020-03-10 18:43:30 +00:00
base Merge "base: tag unique_fd::reset as reinitializing for clang-tidy." 2020-03-10 22:32:41 +00:00
bootstat bootstat: enhance last reboot reason property with file backing 2020-02-14 13:24:16 -08:00
cli-test cli-test: a tool for testing command-line programs. 2019-12-13 12:23:51 -08:00
code_coverage build code_coverage.policy with Android.bp 2020-02-11 10:33:38 -08:00
cpio Switch from dist-for-goals to dist in Android.bp 2018-11-19 23:06:12 -08:00
debuggerd Merge "debuggerd: add an opt-out for OEMs that would rather collect core dumps." 2020-03-06 17:17:51 +00:00
deprecated-adf remove deprecated bp 'subdirs' 2020-01-14 12:18:40 -08:00
diagnose_usb Build adbd for recovery 2018-05-24 14:11:11 +09:00
fastboot fastbootd: use FastbootDevice::GetCurrentSlot to get current slot suffix 2020-03-02 13:14:11 -08:00
fs_mgr Merge changes from topic "no_snapshot_callstack" 2020-03-10 17:08:54 +00:00
gatekeeperd Use optional for nullable types 2020-02-24 09:31:47 +09:00
healthd Add UNSUPPORTED to health HAL 2.1 values 2020-02-15 16:51:02 -08:00
include Move android_filesystem_config.h => fs_config.h 2017-08-02 16:31:19 -07:00
init init: handle property messages asynchronously #2 2020-03-12 17:15:07 -07:00
janitors Add the two best build system janitors. 2019-03-25 10:25:13 -07:00
libappfuse Close /dev/fuse FD before calling onClosed 2019-05-31 17:06:52 +01:00
libasyncio Revert "Mark libs as double_loadable" 2019-03-11 14:10:34 +00:00
libbacktrace Set apex_available property 2020-03-09 16:38:02 +09:00
libbinderwrapper Make libbinderwrapper available in /vendor partition 2018-04-06 08:41:21 +09:00
libcrypto_utils Set apex_available property 2020-03-09 16:38:02 +09:00
libcutils Merge "adbd: make libadbd_services cc_library again." 2020-03-10 18:43:30 +00:00
libdiskconfig Rename target.linux[_x86[_64]] to target.linux_glibc[_x86[_64]] 2017-10-02 10:44:29 -07:00
libgrallocusage Replace -Weverything with -Wextra 2019-11-08 13:09:00 -08:00
libkeyutils Refactor mini-keyctl and split a static library 2019-09-26 10:45:38 -07:00
liblog liblog: add API level guard to NDK log.h header 2020-03-10 08:50:46 -07:00
libmodprobe libmodprobe: parse kernel command line for module options 2019-12-27 13:39:23 -08:00
libnetutils add nodad argument to ifc_act_on_address() and add it to header file 2020-01-26 06:35:30 -08:00
libpackagelistparser Add require_root to adbd_test and libpackagelistparser_test 2019-09-24 09:13:32 -07:00
libpixelflinger Mark gglMulx and gglMulAddx as always_inline 2019-02-14 11:59:48 -08:00
libprocessgroup Convert vts configs to Android.bp 2020-03-07 21:21:33 -08:00
libprocinfo libprocinfo: remove error msg for unknown process state. 2020-01-17 15:55:13 -08:00
libqtaguid Redirect qtaguid native call to netd fwmark client 2017-11-09 18:02:22 -08:00
libsparse Make ramdisk_available. 2020-01-22 16:47:14 -08:00
libstats stats_event.h/c tests 2020-01-22 11:43:01 -08:00
libsuspend Remove libsuspend from VNDK. 2018-08-14 13:39:55 -07:00
libsync libsystem/libsync: Update OWNERS 2020-02-28 10:50:50 -08:00
libsystem Set apex_available property 2020-03-09 16:38:02 +09:00
libsysutils Allow apexes to link against more libs 2020-02-14 10:41:15 -08:00
libunwindstack Remove mips build. 2020-03-06 22:02:09 -08:00
libusbhost Prevent infinite loop on zero length USB descriptors 2020-02-21 11:11:02 -08:00
libutils Set apex_available property 2020-03-09 16:38:02 +09:00
libvndksupport remove deprecated bp 'subdirs' 2020-01-14 12:18:40 -08:00
libziparchive Merge "Fix SEGV in libziparchive with malformed zip file." 2019-12-18 16:14:54 +00:00
llkd Merge changes Ibb4b4ca4,I31572afa 2020-01-17 15:39:45 +00:00
logcat logcat: add 'device shut down' to error message upon EOF 2020-02-14 10:10:44 -08:00
logd logd: don't coalesce identical log messages in the security buffer 2020-02-20 13:21:51 -08:00
logwrapper logwrap: add missing O_CLOEXEC 2020-02-26 10:29:04 -08:00
property_service Rename ro.device_owner system property 2020-02-19 10:34:36 +00:00
qemu_pipe Build adbd for recovery 2018-05-24 14:11:11 +09:00
reboot adb: replace reboot service with exec of /system/bin/reboot. 2019-10-23 14:33:36 -07:00
rootdir Merge "Add new directory for stats metadata" 2020-03-09 18:09:21 +00:00
run-as run-as: improve error messages. 2020-03-04 18:11:18 -08:00
sdcard Move layout_version to /data/misc/installd 2019-08-21 10:12:18 -07:00
set-verity-state set-verity-state: Link to libfs_mgr_binder. 2019-12-30 13:42:57 -08:00
shell_and_utilities Update shell_and_utilities docs for R. 2020-01-16 15:54:16 -08:00
storaged storaged:Thread out of sync will cause null pointer crash 2020-02-11 16:03:41 +08:00
toolbox toolbox: add modprobe 2019-08-06 13:58:13 -07:00
trusty trusty: keymaster: Remove legacy support 2020-02-26 00:43:23 +00:00
usbd Remove libhwbinder/libhidltransport deps 2019-09-05 14:17:42 -07:00
watchdogd Move watchdogd out of init 2018-08-02 12:25:58 -07:00
.clang-format Add a 2 width option of clang format. 2017-03-10 13:01:39 -08:00
.clang-format-2 Move clang-formats to build. 2019-01-18 14:26:33 -08:00
.clang-format-4 Move clang-formats to build. 2019-01-18 14:26:33 -08:00
.gitignore Ignore adb/*.pyc files 2015-08-11 12:59:58 -07:00
Android.bp remove deprecated bp 'subdirs' 2020-01-14 12:18:40 -08:00
CleanSpec.mk snapshotctl don't auto-merge. 2020-03-03 13:19:49 -08:00
MODULE_LICENSE_APACHE2
NOTICE
OWNERS Move per-file OWNERS directives to their directories. 2018-06-06 11:49:40 +09:00
PREUPLOAD.cfg Add a PREUPLOAD.cfg file to run git-clang-format on every commit 2017-03-08 16:51:26 +08:00
TEST_MAPPING Add adb_pairing* tests to TEST_MAPPING. 2020-02-21 16:06:27 -08:00