Windows: Force child processes to exit on main process termination (issue #1011).

git-svn-id: https://chromiumembedded.googlecode.com/svn/branches/1453@1349 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt
2013-07-29 17:38:35 +00:00
parent 5a72d40fc8
commit 16c0a9ca7c
2 changed files with 29 additions and 0 deletions

View File

@ -61,6 +61,12 @@ patches = [
'name': 'drag_handler_601',
'path': '../content/',
},
{
# Force child processes to exit on main process termination.
# http://code.google.com/p/chromiumembedded/issues/detail?id=1011
'name': 'sandbox_1011',
'path': '../content/common/',
},
{
# Fix crash on 10.6 when building with the 10.7 SDK
# http://code.google.com/p/chromiumembedded/issues/detail?id=1026

View File

@ -0,0 +1,23 @@
Index: sandbox_win.cc
===================================================================
--- sandbox_win.cc (revision 202711)
+++ sandbox_win.cc (working copy)
@@ -589,8 +589,17 @@
cmd_line->AppendArg(base::StringPrintf("/prefetch:%d", base::Hash(type_str)));
if (!in_sandbox) {
+ base::LaunchOptions options = base::LaunchOptions();
base::ProcessHandle process = 0;
- base::LaunchProcess(*cmd_line, base::LaunchOptions(), &process);
+
+ static HANDLE hJobObject = NULL;
+ if (!hJobObject) {
+ hJobObject = CreateJobObject(NULL, NULL);
+ base::SetJobObjectAsKillOnJobClose(hJobObject);
+ }
+ options.job_handle = hJobObject;
+
+ base::LaunchProcess(*cmd_line, options, &process);
g_broker_services->AddTargetPeer(process);
return process;
}