PageSignalReceiver::AddObserver fails on Android |
||
Issue descriptionCalling PageSignalReceiver::AddObserver during WebContents initialization on Android fails with the following error: [FATAL:binding_state.cc(93)] Check failed: !is_bound(). Attempting to bind interface that is already bound: resource_coordinator.mojom.PageSignalReceiver The lazy interface binding is guarded by (!observers_.might_have_observers()) check, which seems fragile because the list of observers can become empty after binding. I am working on a fix. Stack trace from https://chromium-review.googlesource.com/c/chromium/src/+/1097481: 000cc1dd logging::LogMessage::~LogMessage() chrome/src/base/logging.cc:592:29 000128c9 mojo::internal::BindingStateBase::BindInternal(mojo::ScopedHandleBase<mojo::MessagePipeHandle>, scoped_refptr<base::SingleThreadTaskRunner>, char const*, std::__ndk1::unique_ptr<mojo::MessageReceiver, std::__ndk1::default_delete<mojo::MessageReceiver> >, bool, bool, mojo::MessageReceiverWithResponderStatus*, unsigned int) chrome/src/mojo/public/cpp/bindings/lib/binding_state.cc:93:3 00a10115 mojo::internal::BindingState<resource_coordinator::mojom::PageSignalReceiver, mojo::RawPtrImplRefTraits<resource_coordinator::mojom::PageSignalReceiver> >::Bind(mojo::ScopedHandleBase<mojo::MessagePipeHandle>, scoped_refptr<base::SingleThreadTaskRunner>) chrome/src/mojo/public/cpp/bindings/lib/binding_state.h:112:23 00a0ff57 mojo::Binding<resource_coordinator::mojom::PageSignalReceiver, mojo::RawPtrImplRefTraits<resource_coordinator::mojom::PageSignalReceiver> >::Bind(mojo::InterfaceRequest<resource_coordinator::mojom::PageSignalReceiver>, scoped_refptr<base::SingleThreadTaskRunner>) chrome/src/mojo/public/cpp/bindings/binding.h:101:21 00a0fe71 resource_coordinator::PageSignalReceiver::AddObserver(resource_coordinator::PageSignalObserver*) chrome/src/chrome/browser/resource_coordinator/page_signal_receiver.cc:98:16 00e0beb1 BloatedRendererTabHelper::BloatedRendererTabHelper(content::WebContents*) chrome/src/chrome/browser/ui/bloated_renderer/bloated_renderer_tab_helper.cc:40:27 00e19cb3 content::WebContentsUserData<BloatedRendererTabHelper>::CreateForWebContents(content::WebContents*) chrome/src/content/public/browser/web_contents_user_data.h:39:65 00e19941 TabHelpers::AttachTabHelpers(content::WebContents*) chrome/src/chrome/browser/ui/tab_helpers.cc:191:3 00a86ba9 TabAndroid::AttachTabHelpers(content::WebContents*) chrome/src/chrome/browser/android/tab_android.cc:197:3 00a855b1 TabAndroid::InitWebContents(_JNIEnv*, base::android::JavaParamRef<_jobject*> const&, unsigned char, unsigned char, base::android::JavaParamRef<_jobject*> const&, int, base::android::JavaParamRef<_jobject*> const&, base::android::JavaParamRef<_jobject*> const&) chrome/src/chrome/browser/android/tab_android.cc:424:3 00a85549 Java_org_chromium_chrome_browser_tab_Tab_nativeInitWebContents chrome/src/out/Android/gen/chrome/browser/jni_headers/chrome/jni/Tab_jni.h:67:18
,
Jun 22 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0f9a9c53bc100d3b85b688753777ca7a31462311 commit 0f9a9c53bc100d3b85b688753777ca7a31462311 Author: Ulan Degenbaev <ulan@chromium.org> Date: Fri Jun 22 09:22:55 2018 Ensure that PageSignalReceiver creates at most one mojo channel. This changes the guard of lazy mojo channel construction from the one that is based on observer list emptiness to a separate boolean flag. The existing guard is fragile because the observer list can become empty after channel construction. See details in the bug and the test. Bug: 855114 Tbr: fdoray@chromium.org Change-Id: I5585c3ac2aa6425d9401bebd3a6c132199f2e011 Reviewed-on: https://chromium-review.googlesource.com/1110365 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#569565} [modify] https://crrev.com/0f9a9c53bc100d3b85b688753777ca7a31462311/chrome/browser/resource_coordinator/page_signal_receiver.cc [modify] https://crrev.com/0f9a9c53bc100d3b85b688753777ca7a31462311/chrome/browser/resource_coordinator/page_signal_receiver_unittest.cc
,
Jun 22 2018
|
||
►
Sign in to add a comment |
||
Comment 1 by u...@chromium.org
, Jun 21 2018