summaryrefslogtreecommitdiff
path: root/logd/LogReaderThread.cpp
diff options
context:
space:
mode:
authorTom Cherry <tomcherry@google.com>2020-10-05 11:35:59 -0700
committerTom Cherry <tomcherry@google.com>2020-10-05 14:59:19 -0700
commit28b9eb513079d8ceb4b0bd512359117582cb83cd (patch)
tree8841bed2786a8a7e1269a7dc82847917bf3fabba /logd/LogReaderThread.cpp
parentf99f09eedab6de27d0484703e6ea67e9e1aa21cd (diff)
logd: add locks around ~SerializedFlushToState
This accesses shared resources in SerializedLogBuffer and therefore requires a lock. Bug: 169736426 Test: malloc_debug_system_tests Change-Id: I807c65f4719481f933b4917a50f83f933b1929fb
Diffstat (limited to 'logd/LogReaderThread.cpp')
-rw-r--r--logd/LogReaderThread.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/logd/LogReaderThread.cpp b/logd/LogReaderThread.cpp
index 4a8be01fa3..6ac9741c30 100644
--- a/logd/LogReaderThread.cpp
+++ b/logd/LogReaderThread.cpp
@@ -72,6 +72,7 @@ void LogReaderThread::ThreadFunction() {
[this](log_id_t log_id, pid_t pid, uint64_t sequence, log_time realtime) {
return FilterFirstPass(log_id, pid, sequence, realtime);
});
+ log_buffer_->DeleteFlushToState(std::move(first_pass_state));
}
bool flush_success = log_buffer_->FlushTo(
writer_.get(), *flush_to_state_,
@@ -105,6 +106,10 @@ void LogReaderThread::ThreadFunction() {
}
}
+ lock.unlock();
+ log_buffer_->DeleteFlushToState(std::move(flush_to_state_));
+ lock.lock();
+
writer_->Release();
auto& log_reader_threads = reader_list_->reader_threads();