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

Issue 678881 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner: ----
Closed: Nov 15
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug



Sign in to add a comment

Mojo: "Failed to locate a binder" message is hard to read, hard to understand

Project Member Reported by mgiuca@chromium.org, Jan 6 2017

Issue description

Working on Mojo, you get these sort of errors all the time: "Failed to locate a binder for interface", which could denote a variety of problems, but usually seems to mean you haven't properly registered an interface in a JSON file.

Here's an example I just got:

01-06 13:52:30.328 23045 23045 E chromium: [ERROR:interface_registry.cc(211)] Failed to locate a binder for interface: content::InstalledAppProvider requested by: content_renderer exposed by: content_browser via InterfaceProviderSpec "navigation:frame".
01-06 13:52:30.328 23045 23045 E chromium: 
01-06 13:52:30.328 23045 23045 E chromium: InterfaceRegistry(navigation:frame):
01-06 13:52:30.328 23045 23045 E chromium: Owned by:
01-06 13:52:30.328 23045 23045 E chromium:   content_browser@ run as: 0292da96-a94e-4ca0-9ac9-82fc585496b8
01-06 13:52:30.328 23045 23045 E chromium: 
01-06 13:52:30.328 23045 23045 E chromium:   Providing:
01-06 13:52:30.328 23045 23045 E chromium:     capability: renderer containing interfaces:
01-06 13:52:30.328 23045 23045 E chromium:       autofill::mojom::AutofillDriver
01-06 13:52:30.328 23045 23045 E chromium:       autofill::mojom::PasswordManagerDriver
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::BarcodeDetection
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::FaceDetectionProvider
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::MediaSessionService
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::PermissionService
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::PresentationService
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::SensitiveInputVisibilityService
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::ShareService
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::WebBluetoothService
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::WebSocket
01-06 13:52:30.328 23045 23045 E chromium:       bluetooth::mojom::AdapterFactory
01-06 13:52:30.328 23045 23045 E chromium:       content::InstalledAppProvider
01-06 13:52:30.328 23045 23045 E chromium:       content::mojom::BrowserTarget
01-06 13:52:30.328 23045 23045 E chromium:       contextual_search::mojom::ContextualSearchJsApiService
01-06 13:52:30.328 23045 23045 E chromium:       device::VibrationManager
01-06 13:52:30.328 23045 23045 E chromium:       device::mojom::GeolocationService
01-06 13:52:30.328 23045 23045 E chromium:       device::mojom::SensorProvider
01-06 13:52:30.328 23045 23045 E chromium:       device::mojom::VRService
01-06 13:52:30.328 23045 23045 E chromium:       device::mojom::WakeLockService
01-06 13:52:30.328 23045 23045 E chromium:       device::nfc::mojom::NFC
01-06 13:52:30.328 23045 23045 E chromium:       device::usb::ChooserService
01-06 13:52:30.328 23045 23045 E chromium:       device::usb::DeviceManager
01-06 13:52:30.328 23045 23045 E chromium:       discardable_memory::mojom::DiscardableSharedMemoryManager
01-06 13:52:30.328 23045 23045 E chromium:       dom_distiller::mojom::DistillabilityService
01-06 13:52:30.328 23045 23045 E chromium:       dom_distiller::mojom::DistillerJavaScriptService
01-06 13:52:30.328 23045 23045 E chromium:       extensions::KeepAlive
01-06 13:52:30.328 23045 23045 E chromium:       extensions::mime_handler::MimeHandlerService
01-06 13:52:30.328 23045 23045 E chromium:       media::mojom::InterfaceFactory
01-06 13:52:30.328 23045 23045 E chromium:       media::mojom::RemoterFactory
01-06 13:52:30.328 23045 23045 E chromium:       media::mojom::Renderer
01-06 13:52:30.328 23045 23045 E chromium:       media_router::mojom::MediaRouter
01-06 13:52:30.328 23045 23045 E chromium:       mojom::MediaDevicesDispatcherHost
01-06 13:52:30.328 23045 23045 E chromium:       mojom::OmniboxPageHandler
01-06 13:52:30.328 23045 23045 E chromium:       mojom::PluginsPageHandler
01-06 13:52:30.328 23045 23045 E chromium:       mojom::SiteEngagementUIHandler
01-06 13:52:30.328 23045 23045 E chromium:       mojom::UsbInternalsPageHandler
01-06 13:52:30.328 23045 23045 E chromium:       password_manager::mojom::CredentialManager
01-06 13:52:30.328 23045 23045 E chromium:       payments::mojom::PaymentRequest
01-06 13:52:30.328 23045 23045 E chromium:       translate::mojom::ContentTranslateDriver
01-06 13:52:30.328 23045 23045 E chromium:       ui::mojom::Gpu
01-06 13:52:30.328 23045 23045 E chromium: 
01-06 13:52:30.328 23045 23045 E chromium:   Requiring:
01-06 13:52:30.328 23045 23045 E chromium:     From: content_renderer:
01-06 13:52:30.328 23045 23045 E chromium:       browser
01-06 13:52:30.328 23045 23045 E chromium: 
01-06 13:52:30.328 23045 23045 E chromium: Bound to:
01-06 13:52:30.328 23045 23045 E chromium:   content_renderer@3_1 run as: 0292da96-a94e-4ca0-9ac9-82fc585496b8
01-06 13:52:30.328 23045 23045 E chromium: 
01-06 13:52:30.328 23045 23045 E chromium:   Providing:
01-06 13:52:30.328 23045 23045 E chromium:     capability: browser containing interfaces:
01-06 13:52:30.328 23045 23045 E chromium:       autofill::mojom::AutofillAgent
01-06 13:52:30.328 23045 23045 E chromium:       autofill::mojom::PasswordAutofillAgent
01-06 13:52:30.328 23045 23045 E chromium:       autofill::mojom::PasswordGenerationAgent
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::AppBannerController
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::EngagementClient
01-06 13:52:30.328 23045 23045 E chromium:       blink::mojom::InstallationService
01-06 13:52:30.328 23045 23045 E chromium:       content::mojom::ImageDownloader
01-06 13:52:30.328 23045 23045 E chromium:       contextual_search::mojom::OverlayPageNotifierService
01-06 13:52:30.328 23045 23045 E chromium:       dom_distiller::mojom::DistillerPageNotifierService
01-06 13:52:30.328 23045 23045 E chromium:       mojom::MediaDevicesListener
01-06 13:52:30.328 23045 23045 E chromium: 
01-06 13:52:30.328 23045 23045 E chromium:   Requiring:
01-06 13:52:30.328 23045 23045 E chromium:     From: content_browser:
01-06 13:52:30.328 23045 23045 E chromium:       renderer
01-06 13:52:30.328 23045 23045 E chromium: 
01-06 13:52:30.328 23045 23045 E chromium: Binders registered for:
01-06 13:52:30.328 23045 23045 E chromium:  * autofill::mojom::AutofillDriver
01-06 13:52:30.328 23045 23045 E chromium:  * autofill::mojom::PasswordManagerDriver
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::BarcodeDetection
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::FaceDetectionProvider
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::MediaSessionService
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::PermissionService
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::PresentationService
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::SensitiveInputVisibilityService
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::ShareService
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::WebBluetoothService
01-06 13:52:30.328 23045 23045 E chromium:  * blink::mojom::WebSocket
01-06 13:52:30.328 23045 23045 E chromium:  * bluetooth::mojom::AdapterFactory
01-06 13:52:30.328 23045 23045 E chromium:  * device::VibrationManager
01-06 13:52:30.328 23045 23045 E chromium:  * device::mojom::GeolocationService
01-06 13:52:30.328 23045 23045 E chromium:  * device::mojom::VRService
01-06 13:52:30.328 23045 23045 E chromium:  * device::mojom::WakeLockService
01-06 13:52:30.328 23045 23045 E chromium:  * device::nfc::mojom::NFC
01-06 13:52:30.328 23045 23045 E chromium:  * device::usb::ChooserService
01-06 13:52:30.328 23045 23045 E chromium:  * device::usb::DeviceManager
01-06 13:52:30.328 23045 23045 E chromium:  * media::mojom::InterfaceFactory
01-06 13:52:30.328 23045 23045 E chromium:  * media::mojom::Renderer
01-06 13:52:30.328 23045 23045 E chromium:  * mojom::MediaDevicesDispatcherHost
01-06 13:52:30.328 23045 23045 E chromium:  * password_manager::mojom::CredentialManager
01-06 13:52:30.328 23045 23045 E chromium:  * payments::mojom::PaymentRequest
01-06 13:52:30.328 23045 23045 E chromium:  * translate::mojom::ContentTranslateDriver
01-06 13:52:30.328 23045 23045 E chromium: 
01-06 13:52:30.328 23045 23045 E chromium:  * - denotes an interface exposed to remote per policy.

I cry every time I see this. It's really hard to read since it splats three separate full lists of unrelated interfaces. I'm not an expert at Mojo so I don't really understand what binders even are, let alone the difference between:
- The binders provided by content_browser.
- The binders provided by content_renderer.
- The list of registered binders.

This error message doesn't communicate what the problem is or what would fix it. This message seems to be saying "I am looking for content::InstalledAppProvider in content_browser but I can't find one" and then goes on to enumerate every single binder provided by content_browser, *including* content::InstalledAppProvider. So it's quite unclear *why* it can't find content::InstalledAppProvider when it is there in the list provided by content_browser.

Every other item in that list is irrelevant to me (I have to visually scan the list looking for content::InstalledAppProvider), so why is it being shown there?

Then it goes on to list all the interfaces provided by content_renderer. I *thought* this was saying that content_renderer was requesting an interface in content_browser, so why is the list of interfaces exposed by content_renderer relevant? Maybe it is, I'm not sure... but if it isn't, this is just more visual noise.

Finally, there's the list of binders registered, along with a * for "interfaces exposed to remote per policy" (which I also don't understand the significance of). content::InstalledAppProvider doesn't appear in this list, so maybe that's the culprit. It's really unclear though, and even if that was true, what do I have to do to get it added to that list? (Is this the thing where I have to add something to a JSON file?)

I would very much like this error message to tell me:
- What exactly the problem is (is the service not registered in a manifest file? Has the service not been registered at runtime?)
- How this can be fixed (e.g., adding an entry to a particular manifest file)
- Nothing else about the many other registered services.

Star dis if u cry evertim.
 
Status: Fixed (was: Untriaged)
I think we have substantially improved the error reporting. The error message now tells you exactly what's wrong and suggests how you need to fix it.

i stil cry evry tiem tho :'((((

Sign in to add a comment