New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 912770 link

Starred by 2 users

Issue metadata

Status: Closed
Owner:
Closed: Jan 16
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

DCHECK fail in policy::StatusUploader at login screen

Project Member Reported by hansberry@chromium.org, Dec 7

Issue description

Chrome Version: HEAD
Platform: 11278.0.0

What steps will reproduce the problem?
(1) Enabled DCHECKs
(2) Deploy chrome
(3) Observe crash loop

gdb provides:

#0  0x000058e1dde5748a in logging::LogMessage::~LogMessage() () at ../../base/logging.cc:874
#1  0x000058e1dc176930 in policy::StatusUploader::StatusUploader(policy::CloudPolicyClient*, std::__1::unique_ptr<policy::DeviceStatusCollector, std::__1::default_delete<policy::DeviceStatusCollector> >, scoped_refptr<base::SequencedTaskRunner> const&, base::TimeDelta) () at ../../chrome/browser/chromeos/policy/status_uploader.cc:58
#2  0x000058e1dc1351b7 in policy::DeviceCloudPolicyManagerChromeOS::CreateStatusUploader() () at ../../chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc:380
#3  0x000058e1dc134f90 in policy::DeviceCloudPolicyManagerChromeOS::StartConnection(std::__1::unique_ptr<policy::CloudPolicyClient, 
#4  0x000058e1dc13104c in policy::DeviceCloudPolicyInitializer::TryToCreateClient() () at ../../chrome/browser/chromeos/policy/device_cloud_policy_initializer.cc:333
...

The culprit DCHECK is at status_uploader.cc:58.

Owners, please prioritize this issue -- other developers cannot develop and test Chrome with DCHECKs on.
 
Cc: atwilson@chromium.org
Owner: poromov@chromium.org
Yeah, looks like we need to delay creating a StatusUploader until after we've been notified that the DeviceCloudPolicyClient is registered. Sergey, can you find someone on your team to take a look?
Owner: burunduk@google.com
Looks like that bug arises if there are different opinions about if client is cloud-registered: it is so according to install attributes, but not to policy store.

That explains why I couldn't reproduce it on my testing device.

hansberry@, could you please provide more info about how did you run into this? Ex. was your device enrolled/just powerwashed/filled with a new chromeos build?

And, if you will run into this next time, could you please provide more lines of stacktrace? I wonder where TryToCreateClient was called.
I found an old bug on the same topic: https://bugs.chromium.org/p/chromium/issues/detail?id=705607

The only place where we use client in StatusUploader is, actually, uploading a status, and after that fix (in mid 2017) there is an additional check if client is registered (with a log message if not) before doing anything that required client to be registered.

So, by now, I suppose, we can just remove this DCHECK. Old bug also explains cases when this registered/unregistered unsyncronization may arise.
I don't believe these was anything special about my device -- it had had the same chromeos image for at least a week before, and the account had been present for at least a week as well. The device is a Pixelbook, if that matters.

I'll keep an eye out for this in the next few days while deploying chrome to this same device. If no one else is hitting this, it can definitely be de-prioritized.
Project Member

Comment 6 by bugdroid1@chromium.org, Jan 16 (6 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/43132ffeb2245cfc7996e11acfeffb163ab0a380

commit 43132ffeb2245cfc7996e11acfeffb163ab0a380
Author: Oleg Davydov <burunduk@google.com>
Date: Wed Jan 16 10:35:17 2019

Remove check for client registration in StatusUploader ctor

StatusUploader's work makes sence only if working on managed device with
resitered client, but due to some missynchonizations we may not know
if it's registered client when creating StatusUploader. That's why there
is an extra registered check before submitting status. See more in:
https://bugs.chromium.org/p/chromium/issues/detail?id=705607

Therefore check in StatusUploader constructor is redundant and causes
only problems when dchecks are enabled:
https://bugs.chromium.org/p/chromium/issues/detail?id=912770

Bug:  912770 
Change-Id: Ib9c4001b87834286a36cbe3ca123f1c456844ad9
Reviewed-on: https://chromium-review.googlesource.com/c/1400664
Reviewed-by: Maksim Ivanov <emaxx@chromium.org>
Commit-Queue: Oleg Davydov <burunduk@google.com>
Cr-Commit-Position: refs/heads/master@{#623183}
[modify] https://crrev.com/43132ffeb2245cfc7996e11acfeffb163ab0a380/chrome/browser/chromeos/policy/status_uploader.cc

Comment 7 by burunduk@google.com, Jan 16 (6 days ago)

Status: Fixed (was: Assigned)

Comment 8 by chchakrapani@chromium.org, Jan 16 (6 days ago)

HI Oleg,
Could you provide steps if this requires manual verification.?

Thanks.!

Comment 9 by burunduk@google.com, Jan 17 (5 days ago)

Hi!

I don't think it requires any manual checks. It was about removing a bogus DCHECK. Old bug 705607 explains why it's bogus (there are some circumstances that are technically valid, but lead to breaking this check, and they were handled in the proper way), and that bag was closed in summer 2017.

DCHECK's are not enabled in release binaries, so I changed almost nothing. Theoretically is't possible (but not easy, even hansberry@, as I can see in comment #5, doesn't know the right conditions) to make a test build, than trigger this check and see that problem (repeating crashes) arises only in old build. But I'm definitely not sure if it's worth of it.

Comment 10 by chchakrapani@chromium.org, Jan 18 (5 days ago)

Status: Closed (was: Fixed)
Thanks Oleg, 
Closing the issue as per the confirmation. 

Sign in to add a comment