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.
Comment 1 by rockot@google.com
, Nov 15