Index: sandbox/win/src/target_services.cc |
diff --git a/sandbox/win/src/target_services.cc b/sandbox/win/src/target_services.cc |
index 03813c8feb7bf691bd6ffb051c681b7e5d9099ad..518507e95dc8a4ea13f515364d29db73a0239275 100644 |
--- a/sandbox/win/src/target_services.cc |
+++ b/sandbox/win/src/target_services.cc |
@@ -7,6 +7,7 @@ |
#include <process.h> |
#include "base/basictypes.h" |
+#include "base/win/windows_version.h" |
#include "sandbox/win/src/crosscall_client.h" |
#include "sandbox/win/src/handle_closer_agent.h" |
#include "sandbox/win/src/handle_interception.h" |
@@ -45,6 +46,13 @@ bool FlushCachedRegHandles() { |
// Checks if we have handle entries pending and runs the closer. |
bool CloseOpenHandles() { |
+ // Windows 10 has FLG_ENABLE_HANDLE_EXCEPTIONS enabled by default so causes |
+ // exceptions to be raised if target process attempts to close a handle that |
+ // has already been closed by HandleCloser. Therefore, do not close any |
+ // handles on Windows 10 until this flag is removed by MS. |
+ // See crbug.com/452613. |
+ if (base::win::GetVersion() == base::win::VERSION_WIN10) |
+ return true; |
if (sandbox::HandleCloserAgent::NeedsHandlesClosed()) { |
sandbox::HandleCloserAgent handle_closer; |