New issue
Advanced search Search tips

Issue 696367 link

Starred by 1 user

Issue metadata

Status: Closed
Owner:
Closed: Dec 8
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

FATAL:arc_net_host_impl.cc(406)] Check failed: !tmp.empty().

Project Member Reported by reve...@chromium.org, Feb 26 2017

Issue description

This DCHECK is failing consistently at startup for "dcheck_always_on = true" builds.
 
Cc: steve...@chromium.org abhishekbh@chromium.org
Hmm, interesting.  So the Chromium style guide says:

> The CHECK() macro will cause an immediate crash if its condition is not met. DCHECK() is like CHECK() but is only compiled in when DCHECK_IS_ON is true (debug builds and some bot configurations, but not end-user builds). NOTREACHED() is equivalent to DCHECK(false).

I always assumed that since we were seeing NOTREACHED errors in the logs (I've fixed several of them myself), both DCHECK(false) and NOTREACHED() were being exercised in our builds.  But alas, the above documentation is not 100% accurate:

#if !DCHECK_IS_ON() && defined(OS_CHROMEOS)
// Implement logging of NOTREACHED() as a dedicated function to get function
// call overhead down to a minimum.
void LogErrorNotReached(const char* file, int line);
#define NOTREACHED()                                       \
  true ? ::logging::LogErrorNotReached(__FILE__, __LINE__) \
       : EAT_STREAM_PARAMETERS
#else
#define NOTREACHED() DCHECK(false)
#endif

In this case (DCHECK at line 406) we are receiving a wifi NetworkConfiguration ONC dictionary with a non-empty GUID, a non-empty WiFi dictionary, and a non-empty Security string.  But the BSSID string is empty (yet present).  I assume this is happening when we request a network list with visible_only=false, because in that case, it may return networks that are not in range.

Steven, according to chrome/test/data/extensions/api_test/networking_private/chromeos/test.js BSSID can be empty.  Is it OK if I add it to the ONC spec as a required string property that can be empty if unknown?  Or should we make it an optional property for consistency with the other WiFi properties?
Status: Assigned (was: Untriaged)
We shouldn't make BSSID required in ONC since we also use ONC for configuring networks, and configurations are not going to include BSSID.

Scanning that code, parts of it are confusing and/or incorrect.

The comment on line 358 says "Retrieve list of nearby wifi networks".

However the filter may be either 'visible only' or 'configured only', depending on 'type'. (We also probably shouldn't have two separate mutually exclusive booleans, the filter parameters are just 'get configured' and 'get visible'). 

If configured(_only) is true, we shouldn't be attempting to parse BSSID, that is really the bug here.

We could also modify TranslateNetworkStateToONC() to not include BSSID if the string is empty, but we still have to make sure that we don't expect BSSID to be present when requesting configured networks.

Triage nag: This Chrome OS bug has an owner but no component. Please add a component so that this can be tracked by the relevant team.
Owner: abhishekbh@chromium.org
<UI triage> Bug owners, please add the appropriate component to your bug. Thanks!
This function is deprecated, so the implementation will be removed once this CL goes in -
https://chromium-review.googlesource.com/c/chromium/src/+/1344991
Components: Platform>Apps>ARC OS>Systems>Network
Status: Closed (was: Assigned)

Sign in to add a comment