Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 1009583004: Add UMA histograms and logging for bad IPC message handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: actions.xml claims to be pretty printed Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Represents the browser side of the browser <--> renderer communication 5 // Represents the browser side of the browser <--> renderer communication
6 // channel. There will be one RenderProcessHost per renderer process. 6 // channel. There will be one RenderProcessHost per renderer process.
7 7
8 #include "content/browser/renderer_host/render_process_host_impl.h" 8 #include "content/browser/renderer_host/render_process_host_impl.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 18 matching lines...) Expand all
29 #include "base/strings/string_util.h" 29 #include "base/strings/string_util.h"
30 #include "base/supports_user_data.h" 30 #include "base/supports_user_data.h"
31 #include "base/sys_info.h" 31 #include "base/sys_info.h"
32 #include "base/threading/thread.h" 32 #include "base/threading/thread.h"
33 #include "base/threading/thread_restrictions.h" 33 #include "base/threading/thread_restrictions.h"
34 #include "base/trace_event/trace_event.h" 34 #include "base/trace_event/trace_event.h"
35 #include "base/tracked_objects.h" 35 #include "base/tracked_objects.h"
36 #include "cc/base/switches.h" 36 #include "cc/base/switches.h"
37 #include "content/browser/appcache/appcache_dispatcher_host.h" 37 #include "content/browser/appcache/appcache_dispatcher_host.h"
38 #include "content/browser/appcache/chrome_appcache_service.h" 38 #include "content/browser/appcache/chrome_appcache_service.h"
39 #include "content/browser/bad_message.h"
39 #include "content/browser/bluetooth/bluetooth_dispatcher_host.h" 40 #include "content/browser/bluetooth/bluetooth_dispatcher_host.h"
40 #include "content/browser/browser_child_process_host_impl.h" 41 #include "content/browser/browser_child_process_host_impl.h"
41 #include "content/browser/browser_main.h" 42 #include "content/browser/browser_main.h"
42 #include "content/browser/browser_main_loop.h" 43 #include "content/browser/browser_main_loop.h"
43 #include "content/browser/browser_plugin/browser_plugin_message_filter.h" 44 #include "content/browser/browser_plugin/browser_plugin_message_filter.h"
44 #include "content/browser/child_process_security_policy_impl.h" 45 #include "content/browser/child_process_security_policy_impl.h"
45 #include "content/browser/device_sensors/device_light_message_filter.h" 46 #include "content/browser/device_sensors/device_light_message_filter.h"
46 #include "content/browser/device_sensors/device_motion_message_filter.h" 47 #include "content/browser/device_sensors/device_motion_message_filter.h"
47 #include "content/browser/device_sensors/device_orientation_message_filter.h" 48 #include "content/browser/device_sensors/device_orientation_message_filter.h"
48 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" 49 #include "content/browser/dom_storage/dom_storage_context_wrapper.h"
(...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 1047
1047 void RenderProcessHostImpl::AddObserver(RenderProcessHostObserver* observer) { 1048 void RenderProcessHostImpl::AddObserver(RenderProcessHostObserver* observer) {
1048 observers_.AddObserver(observer); 1049 observers_.AddObserver(observer);
1049 } 1050 }
1050 1051
1051 void RenderProcessHostImpl::RemoveObserver( 1052 void RenderProcessHostImpl::RemoveObserver(
1052 RenderProcessHostObserver* observer) { 1053 RenderProcessHostObserver* observer) {
1053 observers_.RemoveObserver(observer); 1054 observers_.RemoveObserver(observer);
1054 } 1055 }
1055 1056
1056 void RenderProcessHostImpl::ReceivedBadMessage() { 1057 void RenderProcessHostImpl::ShutdownForBadMessage() {
1057 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 1058 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
1058 if (command_line->HasSwitch(switches::kDisableKillAfterBadIPC)) 1059 if (command_line->HasSwitch(switches::kDisableKillAfterBadIPC))
1059 return; 1060 return;
1060 1061
1061 if (run_renderer_in_process()) { 1062 if (run_renderer_in_process()) {
1062 // In single process mode it is better if we don't suicide but just 1063 // In single process mode it is better if we don't suicide but just
1063 // crash. 1064 // crash.
1064 CHECK(false); 1065 CHECK(false);
1065 } 1066 }
1066 // We kill the renderer but don't include a NOTREACHED, because we want the 1067 // We kill the renderer but don't include a NOTREACHED, because we want the
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
1563 void RenderProcessHostImpl::OnChannelError() { 1564 void RenderProcessHostImpl::OnChannelError() {
1564 ProcessDied(true /* already_dead */, nullptr); 1565 ProcessDied(true /* already_dead */, nullptr);
1565 } 1566 }
1566 1567
1567 void RenderProcessHostImpl::OnBadMessageReceived(const IPC::Message& message) { 1568 void RenderProcessHostImpl::OnBadMessageReceived(const IPC::Message& message) {
1568 // Message de-serialization failed. We consider this a capital crime. Kill the 1569 // Message de-serialization failed. We consider this a capital crime. Kill the
1569 // renderer if we have one. 1570 // renderer if we have one.
1570 LOG(ERROR) << "bad message " << message.type() << " terminating renderer."; 1571 LOG(ERROR) << "bad message " << message.type() << " terminating renderer.";
1571 BrowserChildProcessHostImpl::HistogramBadMessageTerminated( 1572 BrowserChildProcessHostImpl::HistogramBadMessageTerminated(
1572 PROCESS_TYPE_RENDERER); 1573 PROCESS_TYPE_RENDERER);
1573 ReceivedBadMessage(); 1574 bad_message::ReceivedBadMessage(this,
1575 bad_message::RPH_DESERIALIZATION_FAILED);
1574 } 1576 }
1575 1577
1576 BrowserContext* RenderProcessHostImpl::GetBrowserContext() const { 1578 BrowserContext* RenderProcessHostImpl::GetBrowserContext() const {
1577 return browser_context_; 1579 return browser_context_;
1578 } 1580 }
1579 1581
1580 bool RenderProcessHostImpl::InSameStoragePartition( 1582 bool RenderProcessHostImpl::InSameStoragePartition(
1581 StoragePartition* partition) const { 1583 StoragePartition* partition) const {
1582 return storage_partition_impl_ == partition; 1584 return storage_partition_impl_ == partition;
1583 } 1585 }
(...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after
2455 if (worker_ref_count_ == 0) 2457 if (worker_ref_count_ == 0)
2456 Cleanup(); 2458 Cleanup();
2457 } 2459 }
2458 2460
2459 void RenderProcessHostImpl::GetAudioOutputControllers( 2461 void RenderProcessHostImpl::GetAudioOutputControllers(
2460 const GetAudioOutputControllersCallback& callback) const { 2462 const GetAudioOutputControllersCallback& callback) const {
2461 audio_renderer_host()->GetOutputControllers(callback); 2463 audio_renderer_host()->GetOutputControllers(callback);
2462 } 2464 }
2463 2465
2464 } // namespace content 2466 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_process_host_impl.h ('k') | content/browser/renderer_host/render_view_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698