Fix endless loop after resetting log prop (#1536)
This commit is contained in:
parent
47d88050d3
commit
29781f7a0f
|
|
@ -14,11 +14,7 @@ using namespace std::string_view_literals;
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
constexpr size_t kMaxLogSize = 4 * 1024 * 1024;
|
constexpr size_t kMaxLogSize = 4 * 1024 * 1024;
|
||||||
#ifdef NDEBUG
|
constexpr size_t kLogBufferSize = 64 * 1024;
|
||||||
constexpr size_t kLogBufferSize = 256 * 1024;
|
|
||||||
#else
|
|
||||||
constexpr size_t kLogBufferSize = 4 * 1024 * 1024;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
constexpr std::array<char, ANDROID_LOG_SILENT + 1> kLogChar = {
|
constexpr std::array<char, ANDROID_LOG_SILENT + 1> kLogChar = {
|
||||||
|
|
@ -265,16 +261,19 @@ void Logcat::EnsureLogWatchDog() {
|
||||||
(logd_main_size != kErr && logd_main_size >= kLogBufferSize &&
|
(logd_main_size != kErr && logd_main_size >= kLogBufferSize &&
|
||||||
logd_crash_size != kErr &&
|
logd_crash_size != kErr &&
|
||||||
logd_crash_size >= kLogBufferSize))) {
|
logd_crash_size >= kLogBufferSize))) {
|
||||||
SetIntProp(kLogdSizeProp, kLogBufferSize);
|
SetIntProp(kLogdSizeProp, std::max(kLogBufferSize, logd_size));
|
||||||
SetIntProp(kLogdMainSizeProp, kLogBufferSize);
|
SetIntProp(kLogdMainSizeProp, std::max(kLogBufferSize, logd_main_size));
|
||||||
SetIntProp(kLogdCrashSizeProp, kLogBufferSize);
|
SetIntProp(kLogdCrashSizeProp, std::max(kLogBufferSize, logd_crash_size));
|
||||||
SetStrProp(kLogdTagProp, "");
|
SetStrProp(kLogdTagProp, "");
|
||||||
SetStrProp("ctl.start", "logd-reinit");
|
SetStrProp("ctl.start", "logd-reinit");
|
||||||
Log("Reset log settings\n");
|
|
||||||
}
|
}
|
||||||
const auto *pi = __system_property_find(kLogdTagProp.data());
|
const auto *pi = __system_property_find(kLogdTagProp.data());
|
||||||
uint32_t serial;
|
uint32_t serial;
|
||||||
if (!__system_property_wait(pi, 0, &serial, nullptr)) break;
|
__system_property_read_callback(pi, [](auto *c, auto, auto, auto s) {
|
||||||
|
*reinterpret_cast<uint32_t *>(c) = s;
|
||||||
|
}, &serial);
|
||||||
|
if (!__system_property_wait(pi, serial, &serial, nullptr)) break;
|
||||||
|
Log("\nResetting log settings\n");
|
||||||
}
|
}
|
||||||
}).detach();
|
}).detach();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue