Found on Android tip of tree build from today with DCHECKs enabled.
Device: Pixel 2
OS Version: Android P
But since this part of the code is not platform-specific, this issue can likely occur on other platforms as well.
Ran into this using the following steps:
* Navigate Chromium to https://jsfiddle.net/8o1veuhy/35/ to run a stress test script that keeps taking photos.
* After 1765 successful photos, the tab crashed
* Crash stack in logcat:
[FATAL:binding_state.cc(90)] Check failed: !is_bound(). Attempting to bind interface that is already bound: media.mojom.VideoCaptureObserver
Stack Trace:
RELADDR FUNCTION
021ec0c5 logging::LogMessage::~LogMessage()
0226ec41 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)
032ccf35 mojo::internal::BindingState<media::mojom::VideoCaptureObserver, mojo::RawPtrImplRefTraits<media::mojom::VideoCaptureObserver> >::Bind(mojo::ScopedHandleBase<mojo::MessagePipeHandle>, scoped_refptr<base::SingleThreadTaskRunner>)
032ccdef mojo::Binding<media::mojom::VideoCaptureObserver, mojo::RawPtrImplRefTraits<media::mojom::VideoCaptureObserver> >::Bind(mojo::InterfaceRequest<media::mojom::VideoCaptureObserver>, scoped_refptr<base::SingleThreadTaskRunner>)
03e75789 content::VideoCaptureImpl::StartCaptureInternal()
03e755e3 content::VideoCaptureImpl::StartCapture(int, media::VideoCaptureParams const&, base::RepeatingCallback<void (content::VideoCaptureState)> const&, base::RepeatingCallback<void (scoped_refptr<media::VideoFrame> const&, base::TimeTicks)> const&)