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

Issue 761081 link

Starred by 2 users

Issue metadata

Status: Untriaged
Owner: ----
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

OOP HP: utility process attempts to connect to FieldTrial service

Project Member Reported by erikc...@chromium.org, Aug 31 2017

Issue description

"""
[61949:45315:0831/115545.775710:ERROR:service_manager.cc(156)] Connection InterfaceProviderSpec prevented service: content_utility from binding interface: content::mojom::FieldTrialRecorder exposed by: content_browser
"""

We should probably turn off whatever code is trying to do this from the profiling process.
 
Cc: roc...@chromium.org

Comment 2 by roc...@chromium.org, Nov 14 2017

Looks like this code: https://cs.chromium.org/chromium/src/content/child/child_thread_impl.cc?rcl=ffe3596f7c133aee9d6534278899db104dc7c292&l=412

If it shouldn't run in all child processes, then it shouldn't be in ChildThreadImpl.

Comment 3 by roc...@chromium.org, Nov 14 2017

Alternatively, if it should run in all child processes, we should give the utility process access to the interface.

Either option is trivial to implement.
Cc: chiniforooshan@chromium.org
Cc: dcheng@chromium.org lukasza@chromium.org
+lukasza@

I think https://chromium-review.googlesource.com/c/chromium/src/+/567034 moved it to the ChildThreadImpl. lukasza@, should the utility process be allowed to access to FieldTrialRecorder?
Cc: asvitk...@chromium.org
+asvitkine@

I am not really an owner of the field trials feature.  I tried below to answer the questions asked in the previous comments, but I hope that asvitkine@ can shout if I say something incorrect below :-)

I think that field trials activation can happen in any process - we want to allow any code to call base::FeatureList::IsEnabled(...), regardless of the process this code runs in.  Therefore I think that we should give the utility process access to the FieldTrialRecorder interface.  I think that *all* processes should have access to the interface.

I am not sure what is broken if the utility process doesn't have access to that interface.  I *think* that if a field trial is "activated" (e.g. by using a feature that calls base::FeatureList::IsEnabled(...)) *only* in the utility process, then (without granting the access) such a field trial would never report any users in the trial / would never associate any UMA data with the trial.  If this scenario is indeed broken, then maybe it is desirable to add a test that covers this scenario (I don't know how difficult it would be to write such a test).
I agree with comment 6. We should support field trials in all processes - so we should expose the relevant interfaces for this. The failure mode is as you described - the user won't be marked as active in UMA.

+1 to having a test for this, but also not sure how much is involved. If in the test we could both: a) execute custom code in the helper and b) execute custom code in the browser to verify state, then it should be possible to test this. We would want the browser to set up a field trial and then the helper to query it and then the browser to check if it received the activation.

I don't have any experience writing such cross-process tests though, so don't have advise on how to do that. (But maybe someone cc'd knows how that can be done.)
Cc: -roc...@chromium.org rockot@google.com

Sign in to add a comment