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..bd33c050e814593c7a91228534aca5a67e9e13be 100644 |
--- a/sandbox/win/src/target_services.cc |
+++ b/sandbox/win/src/target_services.cc |
@@ -74,6 +74,14 @@ ResultCode TargetServicesBase::Init() { |
// Failure here is a breach of security so the process is terminated. |
void TargetServicesBase::LowerToken() { |
+#if defined(ADDRESS_SANITIZER) |
+ // Bind and leak dbghelp.dll before the token is lowered, otherwise |
+ // AddressSanitizer will crash when trying to symbolize a report. |
+ // TODO: find a better place to do this? |
Timur Iskhodzhanov
2015/01/30 16:05:30
Please advise where to move this code?
Will Harris
2015/01/30 17:49:17
Warmup is usually done specific for each sandboxed
Timur Iskhodzhanov
2015/02/02 15:38:58
I actually want it to run always (including chrome
|
+ if (!LoadLibraryA("dbghelp.dll")) |
+ // TODO: If this is a good place, define a new SBOX_FATAL exit code. |
+ ::TerminateProcess(::GetCurrentProcess(), 0x1234); |
cpu_(ooo_6.6-7.5)
2015/01/30 20:28:24
correct, this happens ahead on each client.
Timur Iskhodzhanov
2015/02/02 15:38:58
Can you please clarify this comment?
Did you mean
|
+#endif |
if (ERROR_SUCCESS != |
SetProcessIntegrityLevel(g_shared_delayed_integrity_level)) |
::TerminateProcess(::GetCurrentProcess(), SBOX_FATAL_INTEGRITY); |