| Index: runtime/vm/profiler_win.cc
|
| diff --git a/runtime/vm/profiler_win.cc b/runtime/vm/profiler_win.cc
|
| index 61aa28bed839af7c12912d308d9eb1f02d969e7b..81aa49838322e1eb669dfe75cf150559b884442f 100644
|
| --- a/runtime/vm/profiler_win.cc
|
| +++ b/runtime/vm/profiler_win.cc
|
| @@ -20,7 +20,9 @@ static void CollectSample(IsolateProfilerData* profiler_data,
|
| uintptr_t stack_lower,
|
| uintptr_t stack_upper) {
|
| uintptr_t sp = stack_lower;
|
| + ASSERT(profiler_data != NULL);
|
| SampleBuffer* sample_buffer = profiler_data->sample_buffer();
|
| + ASSERT(sample_buffer != NULL);
|
| Sample* sample = sample_buffer->ReserveSample();
|
| ASSERT(sample != NULL);
|
| sample->timestamp = OS::GetCurrentTimeMicros();
|
| @@ -101,7 +103,11 @@ int64_t ProfilerManager::SampleAndRescheduleIsolates(int64_t current_time) {
|
| Isolate* isolate = isolates_[i];
|
| ScopedMutex isolate_lock(isolate->profiler_data_mutex());
|
| IsolateProfilerData* profiler_data = isolate->profiler_data();
|
| - ASSERT(profiler_data != NULL);
|
| + if ((profiler_data == NULL) || !profiler_data->CanExpire() ||
|
| + (profiler_data->sample_buffer() == NULL)) {
|
| + // Descheduled.
|
| + continue;
|
| + }
|
| if (profiler_data->ShouldSample(current_time)) {
|
| SuspendAndSample(isolate, profiler_data);
|
| Reschedule(profiler_data);
|
|
|