Index: content/browser/renderer_host/render_process_host_impl.cc |
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc |
index 717877410e36859f4c56328a7b64c1d67c30e94b..5b78ad64e2e9ab78f050e6a82c59c8fb3a71103d 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -20,6 +20,7 @@ |
#include "base/bind_helpers.h" |
#include "base/callback.h" |
#include "base/command_line.h" |
+#include "base/debug/alias.h" |
#include "base/debug/trace_event.h" |
#include "base/files/file.h" |
#include "base/lazy_instance.h" |
@@ -918,11 +919,33 @@ ServiceRegistry* RenderProcessHostImpl::GetServiceRegistry() { |
return mojo_application_host_->service_registry(); |
} |
+namespace { |
+struct DebugInfoToCapture { |
+ public: |
+ DebugInfoToCapture(int32 rid, int pid) |
+ : routing_id(rid), process_id(pid) { |
+ signature[0] = 'I'; |
+ signature[1] = 'N'; |
+ signature[2] = 'F'; |
+ signature[3] = 'O'; |
+ } |
+ |
+ char signature[4]; |
+ int32 routing_id; |
+ int process_id; |
+}; |
+} |
+ |
void RenderProcessHostImpl::AddRoute( |
int32 routing_id, |
IPC::Listener* listener) { |
- DCHECK(widget_helper_->IsRoutingIDProbablyValid(routing_id)) |
- << "Found Routing ID conflicts: " << routing_id; |
+ DebugInfoToCapture info(routing_id, GetID()); |
+ base::debug::Alias(&info); |
+ CHECK(widget_helper_->IsRoutingIDProbablyValid(routing_id)) |
+ << "Found Invalid Routing ID: " << routing_id; |
+ CHECK(!listeners_.Lookup(routing_id)) |
+ << "Found Routing ID conflicts: " << routing_id |
+ << " with Child PID: " << GetID(); |
listeners_.AddWithID(listener, routing_id); |
} |