New issue
Advanced search Search tips

Issue 728195 link

Starred by 4 users

Issue metadata

Status: Untriaged
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug-Regression



Sign in to add a comment

Sync IPC from ContentRendererClient::RenderThreadStarted no longer works

Project Member Reported by marshall@chromium.org, May 31 2017

Issue description

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."

 
Cc: -roc...@chromium.org rockot@google.com

Sign in to add a comment