Chrome Version: master revision d483fb771 (#474934) (M60 branch point)
OS: Windows 10 64-bit
What steps will reproduce the problem?
(1) Send a sync IPC message from ContentRendererClient::RenderThreadStarted using RenderThread::Get()->Send()
What is the expected result?
The IPC message should arrive in the browser process IPC::MessageFilter.
What happens instead?
The IPC message never arrives and the Send() call blocks the renderer process.
Please use labels and text to provide additional information.
Full discussion in https://groups.google.com/a/chromium.org/d/msg/chromium-dev/0vTL5OQlpOY/xBKeE861BgAJ. Quoting rockot@ from that thread:
"Looks like this behavior would have been broken by r465462. If you block the main thread from RenderThreadStarted, the IPC Channel will never actually get connected.
Unfortunately we have code in Chrome which now requires this behavior, as it uses RenderThreadStarted to install (the equivalent of) renderer-side IPC filters, and these need to be installed before ChildThreadImpl::StartServiceManagerConnection() is called to avoid raciness. If you need to make something work for now, the thing to do is hack it so your sync IPC comes after StartServiceManagerConnection.
I think we ought to revert back to having a separate ContentRendererClient::ExposeInterfacesToBrowser which we call before StartServiceManagerConnection, and RenderThreadStarted can be moved back to after that call."
Comment 1 by roc...@chromium.org
, Oct 17