Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3196be61 authored by Paul Lawrence's avatar Paul Lawrence
Browse files

Revert "Fix deadlock caused by two-threaded property controls"

This reverts commit 606afc7b.

These fixes for b/262208935 introduced a race condition. We believe the
race is fixed by ag/23879563, but at this point in the release feel that
reverting the fixes and refixing in main is the better solution

Test: Builds, boots
Bug: 283202477
Bug: 288991737
Ignore-AOSP-First: Reverting CL only in internal
Change-Id: I9ae6863b0ea5e064c59d9d34c03d33fa1da12fdc
parent c742bfda
Loading
Loading
Loading
Loading
+23 −27
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ static bool accept_messages = false;
static std::mutex accept_messages_lock;
static std::thread property_service_thread;
static std::thread property_service_for_system_thread;
static std::mutex set_property_lock;

static std::unique_ptr<PersistWriteThread> persist_write_thread;

@@ -394,11 +395,7 @@ static std::optional<uint32_t> PropertySet(const std::string& name, const std::s
        return {PROP_ERROR_INVALID_VALUE};
    }

    if (name == "sys.powerctl") {
        // No action here - NotifyPropertyChange will trigger the appropriate action, and since this
        // can come to the second thread, we mustn't call out to the __system_property_* functions
        // which support multiple readers but only one mutator.
    } else {
    auto lock = std::lock_guard{set_property_lock};
    prop_info* pi = (prop_info*)__system_property_find(name.c_str());
    if (pi != nullptr) {
        // ro.* properties are actually "write-once".
@@ -425,7 +422,6 @@ static std::optional<uint32_t> PropertySet(const std::string& name, const std::s
        }
        WritePersistentProperty(name, value);
    }
    }

    NotifyPropertyChange(name, value);
    return {PROP_SUCCESS};