No description
Find a file
Tom Cherry d2dab830d3 init: handle property service callbacks asynchronously
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.

There are possible partial solutions here: the socket's buffer may be
increased or property_service may only send messages for the
properties that init will take action on, however all of these
solutions still lead to eventual deadlock.  The only complete solution
is to handle these messages asynchronously.

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
4) A lock for any actions with ServiceList or any Services, enforced
   through thread annotations, particularly since this code was not
   designed with the intention of being multi-threaded.

Bug: 146877356
Bug: 148236233
Test: boot
Test: kill hwservicemanager without deadlock
Merged-In: I84108e54217866205a48c45e8b59355012c32ea8
Change-Id: I84108e54217866205a48c45e8b59355012c32ea8
(cherry picked from commit 7205c62933)
2020-03-02 11:08:50 -08:00
adb Remove pairing_auth, pairing_connection from recovery. 2020-02-28 19:02:28 +00:00
base Merge "Allow apexes to link against more libs" 2020-02-19 01:17:09 +00:00
bootstat Merge "bootstat: enhance last reboot reason property with file backing" am: 7550e6f882 am: ffd276388f am: c0210f1d0e 2020-02-17 10:12:25 +00: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 [GWP-ASan] Add GWP-ASan information to tombstones. 2020-02-18 16:49:50 -08: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 Merge "Don't require bootloader fastboot for VTS compliance." 2020-02-07 21:46:01 +00:00
fs_mgr Merge "Mark fs-verity support for ext4 userdata if first_api_level >= R" into rvc-dev 2020-02-27 22:44:41 +00:00
gatekeeperd Remove libhwbinder/libhidltransport deps 2019-09-05 14:17:42 -07: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 service callbacks asynchronously 2020-03-02 11:08:50 -08: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 libbacktrace: Fix clang-tidy warning 2019-09-09 18:39:08 +02:00
libbinderwrapper Make libbinderwrapper available in /vendor partition 2018-04-06 08:41:21 +09:00
libcrypto_utils Convert more modules to Android.bp 2018-10-31 21:53:37 -07:00
libcutils Always use shared memory for atrace. 2020-02-26 16:59:18 +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 Revert "liblog: disable header_abi_checker" 2020-03-02 17:56:23 +00: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
libprocessgroup libprocessgroup: Prevent SetProcessProfiles from using cached fd 2020-02-14 01:42:11 +00: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 Make libstatssocket a shared_lib 2020-02-27 11:37:33 -08:00
libsuspend Remove libsuspend from VNDK. 2018-08-14 13:39:55 -07:00
libsync Rename # vndk tag to # llndk 2019-11-13 14:32:44 +09:00
libsystem Merge changes I8186718c,I8d6f33e9,I56fe5e11,Ie4004c98,I531d3d60, ... am: b26696e2dd 2019-05-21 02:24:56 -07:00
libsysutils Allow apexes to link against more libs 2020-02-14 10:41:15 -08:00
libunwindstack Rewrite DwarfSectionImpl::InsertFde 2020-02-23 06:34:21 +00:00
libusbhost Revert "Mark libs as double_loadable" 2019-03-11 14:10:34 +00:00
libutils Merge "Add apex available to libutils" 2020-02-13 06:06:02 +00: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 Rename ro.device_owner system property 2020-02-19 10:34:36 +00:00
logwrapper logwrap: add missing O_CLOEXEC 2020-02-27 09:41:24 -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 "Revert^2 "Update init.rc for statsd setup"" 2020-02-20 08:00:53 +00:00
run-as run-as: improve diagnostics on failure. 2019-03-13 11:16:03 -07: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 Merge "First working version of the confirmationui HAL service" 2020-01-21 16:40:03 +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
Android.bp remove deprecated bp 'subdirs' 2020-01-14 12:18:40 -08:00
CleanSpec.mk Move adbd to an apex. 2019-11-04 15:52:16 -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 Move adb RSA utilities into its own library. 2020-02-11 20:49:20 -08:00