Index: ppapi/proxy/ppapi_command_buffer_proxy.cc |
diff --git a/ppapi/proxy/ppapi_command_buffer_proxy.cc b/ppapi/proxy/ppapi_command_buffer_proxy.cc |
index 7a2783a20064415baa55dc52cf01cfcc2a25b07d..86aa3c741bb3e69525a5ce083a336b47854790ed 100644 |
--- a/ppapi/proxy/ppapi_command_buffer_proxy.cc |
+++ b/ppapi/proxy/ppapi_command_buffer_proxy.cc |
@@ -219,7 +219,10 @@ int32 PpapiCommandBufferProxy::CreateGpuMemoryBufferImage( |
bool PpapiCommandBufferProxy::Send(IPC::Message* msg) { |
DCHECK(last_state_.error == gpu::error::kNoError); |
- if (channel_->Send(msg)) |
+ // We need hold the Pepper proxy lock for sync IPC, because GPU command buffer |
+ // may use a sync IPC with another lock held. It may cause deadlock. |
+ // http://crbug.com/418651 |
+ if (channel_->SendAndStayLocked(msg)) |
return true; |
last_state_.error = gpu::error::kLostContext; |