Skip to content

Commit af09015

Browse files
author
David Roger
committed
[signin] Dont delete DiceTurnSyncOnHelper from its constructor
This seems to be undefined behavior and is caught by the ASAN bot. [email protected] (cherry picked from commit 62a2906) Bug: 816372 Change-Id: I16435111c860115bf288798b0c88ea9e37daf147 Reviewed-on: https://chromium-review.googlesource.com/948843 Reviewed-by: Mihai Sardarescu <[email protected]> Commit-Queue: David Roger <[email protected]> Cr-Original-Commit-Position: refs/heads/master@{#541061} Reviewed-on: https://chromium-review.googlesource.com/952965 Reviewed-by: David Roger <[email protected]> Cr-Commit-Position: refs/branch-heads/3359@{#55} Cr-Branched-From: 66afc5e-refs/heads/master@{#540276}
1 parent 8c35ac9 commit af09015

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
#include "chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.h"
66

77
#include "base/bind.h"
8+
#include "base/location.h"
89
#include "base/logging.h"
910
#include "base/metrics/histogram_macros.h"
1011
#include "base/metrics/user_metrics.h"
1112
#include "base/metrics/user_metrics_action.h"
1213
#include "base/strings/utf_string_conversions.h"
14+
#include "base/threading/sequenced_task_runner_handle.h"
1315
#include "chrome/browser/browser_process.h"
1416
#include "chrome/browser/policy/cloud/user_policy_signin_service.h"
1517
#include "chrome/browser/policy/cloud/user_policy_signin_service_factory.h"
@@ -71,7 +73,10 @@ DiceTurnSyncOnHelper::DiceTurnSyncOnHelper(
7173
DCHECK(!signin_util::IsForceSigninEnabled());
7274

7375
if (HasCanOfferSigninError()) {
74-
AbortAndDelete();
76+
// Do not self-destruct synchronously in the constructor.
77+
base::SequencedTaskRunnerHandle::Get()->PostTask(
78+
FROM_HERE, base::BindOnce(&DiceTurnSyncOnHelper::AbortAndDelete,
79+
base::Unretained(this)));
7580
return;
7681
}
7782

chrome/browser/ui/webui/signin/dice_turn_sync_on_helper_unittest.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ TEST_F(DiceTurnSyncOnHelperTest, CanOfferSigninErrorKeepAccount) {
428428
// Signin flow.
429429
CreateDiceTurnOnSyncHelper(
430430
DiceTurnSyncOnHelper::SigninAbortedMode::KEEP_ACCOUNT);
431+
base::RunLoop().RunUntilIdle();
431432
// Check expectations.
432433
EXPECT_FALSE(signin_manager()->IsAuthenticated());
433434
EXPECT_TRUE(token_service()->RefreshTokenIsAvailable(account_id()));
@@ -443,6 +444,7 @@ TEST_F(DiceTurnSyncOnHelperTest, CanOfferSigninErrorRemoveAccount) {
443444
// Signin flow.
444445
CreateDiceTurnOnSyncHelper(
445446
DiceTurnSyncOnHelper::SigninAbortedMode::REMOVE_ACCOUNT);
447+
base::RunLoop().RunUntilIdle();
446448
// Check expectations.
447449
EXPECT_FALSE(signin_manager()->IsAuthenticated());
448450
EXPECT_FALSE(token_service()->RefreshTokenIsAvailable(account_id()));

0 commit comments

Comments
 (0)