OOP HP: utility process attempts to connect to FieldTrial service |
|||||
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.
,
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.
,
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.
,
Nov 14 2017
,
Nov 15 2017
+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?
,
Nov 15 2017
+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).
,
Nov 15 2017
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.)
,
Oct 17
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by thestig@chromium.org
, Nov 13 2017