| Index: chrome/app/chrome_exe_main_gtk.cc
|
| diff --git a/chrome/app/chrome_exe_main_gtk.cc b/chrome/app/chrome_exe_main_gtk.cc
|
| index f84867aef2bd9f270e2edd83f51b11e56ecf40b2..fe663ce445cbed900af5e97dfa1977fd6b65329e 100644
|
| --- a/chrome/app/chrome_exe_main_gtk.cc
|
| +++ b/chrome/app/chrome_exe_main_gtk.cc
|
| @@ -10,6 +10,31 @@
|
| // windows, this does nothing but load chrome.dll and invoke its entry point in
|
| // order to make it easy to update the app from GoogleUpdate. We don't need
|
| // that extra layer with on linux.
|
| +
|
| +#if defined(ADDRESS_SANITIZER) && defined(GOOGLE_CHROME_BUILD)
|
| +// Default AddressSanitizer options for the official build. These do not affect
|
| +// tests or non-official Chromium builds.
|
| +// - disable the strict memcmp() checking (http://crbug.com/178677 and
|
| +// http://crbug.com/178404).
|
| +// - set the malloc_context_size (i.e. the size of stack traces collected by
|
| +// ASan for each malloc/free) to 5. These stack traces tend to accumulate
|
| +// very fast in applications using JIT (v8 in Chrome's case), see
|
| +// https://code.google.com/p/address-sanitizer/issues/detail?id=177
|
| +// - disable the in-process symbolization, which isn't 100% compatible with
|
| +// the existing sandboxes and doesn't make much sense for stripped official
|
| +// binaries.
|
| +const char *kAsanDefaultOptions =
|
| + "malloc_context_size=5 strict_memcmp=0 symbolize=false";
|
| +
|
| +// Override the default ASan options for the Google Chrome executable.
|
| +// __asan_default_options should not be instrumented, because it is called
|
| +// before ASan is initialized.
|
| +extern "C"
|
| +__attribute__((no_sanitize_address))
|
| +const char *__asan_default_options() {
|
| + return kAsanDefaultOptions;
|
| +}
|
| +#endif
|
|
|
| extern "C" {
|
| int ChromeMain(int argc, const char** argv);
|
|
|