summaryrefslogtreecommitdiffstats
path: root/sync/engine/sync_scheduler_impl.cc
diff options
context:
space:
mode:
authorpavely@chromium.org <pavely@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 04:13:59 +0000
committerpavely@chromium.org <pavely@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 04:13:59 +0000
commitcf6a02408972586fb3b92f8ddfb185a8fb0fa363 (patch)
treee67c77e37984f9e545e8dab63974a8186dc2112d /sync/engine/sync_scheduler_impl.cc
parent9af6d639460e0631c2b078397373445fbe2b67b9 (diff)
downloadchromium_src-cf6a02408972586fb3b92f8ddfb185a8fb0fa363.zip
chromium_src-cf6a02408972586fb3b92f8ddfb185a8fb0fa363.tar.gz
chromium_src-cf6a02408972586fb3b92f8ddfb185a8fb0fa363.tar.bz2
Avoid SEGFAULT when scheduler is stopped as part of sync cycle.
Sync cycle might receive response from server that causes scheduler to stop and draws pending_configure_params_ invalid. Check started_ before dereferencing pending_configure_params_ to avoid SEGFAULT. BUG=320738 Review URL: https://codereview.chromium.org/62263003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236138 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/engine/sync_scheduler_impl.cc')
-rw-r--r--sync/engine/sync_scheduler_impl.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/sync/engine/sync_scheduler_impl.cc b/sync/engine/sync_scheduler_impl.cc
index 66460d3..85e1b67 100644
--- a/sync/engine/sync_scheduler_impl.cc
+++ b/sync/engine/sync_scheduler_impl.cc
@@ -528,7 +528,9 @@ void SyncSchedulerImpl::DoConfigurationSyncSessionJob(JobPriority priority) {
NotifyRetryTime(base::Time());
} else {
HandleFailure(session->status_controller().model_neutral_state());
- if (!pending_configure_params_->retry_task.is_null()) {
+ // Sync cycle might receive response from server that causes scheduler to
+ // stop and draws pending_configure_params_ invalid.
+ if (started_ && !pending_configure_params_->retry_task.is_null()) {
pending_configure_params_->retry_task.Run();
pending_configure_params_->retry_task.Reset();
}