Skip to content

Commit 2c4e65f

Browse files
rmacnak-googleCommit Queue
authored and
Commit Queue
committed
[vm] Drain all events when shutting down the file timeline recorder.
TEST=vm/dart/isolates/fast_object_copy_timeline_test Change-Id: I650adcf552e5532fb8bffbf942a099adf7bab285 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/375022 Reviewed-by: Derek Xu <[email protected]> Commit-Queue: Ryan Macnak <[email protected]>
1 parent 8f337b0 commit 2c4e65f

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

runtime/vm/timeline.cc

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2017,13 +2017,8 @@ TimelineEventFileRecorderBase::~TimelineEventFileRecorderBase() {
20172017
OSThread::Join(thread_id_);
20182018
thread_id_ = OSThread::kInvalidThreadJoinId;
20192019

2020-
TimelineEvent* event = head_;
2021-
while (event != nullptr) {
2022-
TimelineEvent* next = event->next();
2023-
delete event;
2024-
event = next;
2025-
}
2026-
head_ = tail_ = nullptr;
2020+
ASSERT(head_ == nullptr);
2021+
ASSERT(tail_ == nullptr);
20272022

20282023
Dart_FileCloseCallback file_close = Dart::file_close_callback();
20292024
(*file_close)(file_);
@@ -2033,10 +2028,13 @@ TimelineEventFileRecorderBase::~TimelineEventFileRecorderBase() {
20332028
void TimelineEventFileRecorderBase::Drain() {
20342029
MonitorLocker ml(&monitor_);
20352030
thread_id_ = OSThread::GetCurrentThreadJoinId(OSThread::Current());
2036-
while (!shutting_down_) {
2031+
for (;;) {
20372032
if (head_ == nullptr) {
2033+
if (shutting_down_) {
2034+
break;
2035+
}
20382036
ml.Wait();
2039-
continue; // Recheck empty and shutting down.
2037+
continue; // Recheck empty.
20402038
}
20412039
TimelineEvent* event = head_;
20422040
TimelineEvent* next = event->next();

0 commit comments

Comments
 (0)