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

Side by Side Diff: content/child/child_thread.cc

Issue 20842002: child processes: wait 60 seconds before sending SIGALRM. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved comment. Created 7 years, 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "content/child/child_thread.h" 5 #include "content/child/child_thread.h"
6 6
7 #include "base/allocator/allocator_extension.h" 7 #include "base/allocator/allocator_extension.h"
8 #include "base/base_switches.h" 8 #include "base/base_switches.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 // from the IPC channel) are routed to the main message loop but never 63 // from the IPC channel) are routed to the main message loop but never
64 // processed (because that message loop is stuck in V8). 64 // processed (because that message loop is stuck in V8).
65 // 65 //
66 // One could make the browser SIGKILL the renderers, but that leaves open a 66 // One could make the browser SIGKILL the renderers, but that leaves open a
67 // large window where a browser failure (or a user, manually terminating 67 // large window where a browser failure (or a user, manually terminating
68 // the browser because "it's stuck") will leave behind a process eating all 68 // the browser because "it's stuck") will leave behind a process eating all
69 // the CPU. 69 // the CPU.
70 // 70 //
71 // So, we install a filter on the channel so that we can process this event 71 // So, we install a filter on the channel so that we can process this event
72 // here and kill the process. 72 // here and kill the process.
73 //
74 // We want to kill this process after giving it 30 seconds to run the exit
75 // handlers. SIGALRM has a default disposition of terminating the
76 // application.
77 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kChildCleanExit)) 73 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kChildCleanExit))
78 alarm(30); 74 // If clean exit is requested, we want to kill this process after giving
75 // it 60 seconds to run exit handlers. Exit handlers may including writing
76 // profile data to disk (which happens under profile collection mode).
Avi (use Gerrit) 2013/08/01 15:29:43 Yeah, you need braces here. Even if there's only o
asharif1 2013/08/01 15:33:42 Done.
77 alarm(60);
79 else 78 else
80 _exit(0); 79 _exit(0);
81 } 80 }
82 81
83 protected: 82 protected:
84 virtual ~SuicideOnChannelErrorFilter() {} 83 virtual ~SuicideOnChannelErrorFilter() {}
85 }; 84 };
86 85
87 #endif // OS(POSIX) 86 #endif // OS(POSIX)
88 87
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 // inflight that would addref it. 393 // inflight that would addref it.
395 Send(new ChildProcessHostMsg_ShutdownRequest); 394 Send(new ChildProcessHostMsg_ShutdownRequest);
396 } 395 }
397 396
398 void ChildThread::EnsureConnected() { 397 void ChildThread::EnsureConnected() {
399 LOG(INFO) << "ChildThread::EnsureConnected()"; 398 LOG(INFO) << "ChildThread::EnsureConnected()";
400 base::KillProcess(base::GetCurrentProcessHandle(), 0, false); 399 base::KillProcess(base::GetCurrentProcessHandle(), 0, false);
401 } 400 }
402 401
403 } // namespace content 402 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698