Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1492)

Unified Diff: net/log/file_net_log_observer.cc

Issue 2932613002: Fix race causing crash in net::FileNetLogObserver shutdown (Closed)
Patch Set: add tests Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/log/file_net_log_observer.cc
diff --git a/net/log/file_net_log_observer.cc b/net/log/file_net_log_observer.cc
index 721ae8744ccfebe53f58ea680ca4f6925127b4dd..0c05f9e1e2f3a239090d9e3024231a09b44b343e 100644
--- a/net/log/file_net_log_observer.cc
+++ b/net/log/file_net_log_observer.cc
@@ -265,10 +265,10 @@ std::unique_ptr<FileNetLogObserver> FileNetLogObserver::CreateUnbounded(
FileNetLogObserver::~FileNetLogObserver() {
if (net_log()) {
// StopObserving was not called.
+ net_log()->DeprecatedRemoveObserver(this);
file_task_runner_->PostTask(
FROM_HERE, base::Bind(&FileNetLogObserver::FileWriter::DeleteAllFiles,
base::Unretained(file_writer_)));
- net_log()->DeprecatedRemoveObserver(this);
}
file_task_runner_->DeleteSoon(FROM_HERE, file_writer_);
}
@@ -280,13 +280,13 @@ void FileNetLogObserver::StartObserving(NetLog* net_log,
void FileNetLogObserver::StopObserving(std::unique_ptr<base::Value> polled_data,
const base::Closure& callback) {
+ net_log()->DeprecatedRemoveObserver(this);
+
file_task_runner_->PostTaskAndReply(
FROM_HERE, base::Bind(&FileNetLogObserver::FileWriter::FlushThenStop,
base::Unretained(file_writer_), write_queue_,
base::Passed(&polled_data)),
callback);
-
- net_log()->DeprecatedRemoveObserver(this);
}
void FileNetLogObserver::OnAddEntry(const NetLogEntry& entry) {
@@ -437,6 +437,7 @@ void FileNetLogObserver::BoundedFileWriter::Flush(
write_queue->SwapQueue(&local_file_queue);
std::string to_print;
+ CHECK(!event_files_.empty());
size_t file_size = ftell(event_files_[current_file_idx_].get());
size_t memory_freed = 0;

Powered by Google App Engine
This is Rietveld 408576698