Skip to content
  • ananta's avatar
    Switch chrome_elf exception handling from breakpad to crashpad. · 34831427
    ananta authored
    Changes in this patch are as below:
    1. chrome_elf: Removing breakpad and corresponding exception initialization using breakpad. Registering
       crashpad as the exception handling mechanism in chrome_elf. We continue to handle exceptions in chrome_elf
       DllMain and in the blacklist interception code as before, i.e. we use crashpad to grab the dump and pass
       the exception to the next handler in the chain. I also added support in chrome_elf to not initialize
       crashpad if it is being loaded in some tests. For e.g. the ELFImportsTest. This is via the exe name check.
    
    2. chrome.exe:- Removing crashpad exception registration. Also we need to retrieve current exception reports information
       from chrome_elf instead of chrome.
    
    3. Intercept the SetUnhandledExceptionFilter API in chrome_elf via IAT patching on the exe and disallow the call. This
       is to prevent CRT from overwriting crashpads exception filter. I added a TODO to see if we can use EAT patching or
       possibly sidestep if we can support 64 bit with it.
    
    4. Added a function RegisterCrashKeysForDebugging to the ChromeCrashReporterClient class on Windows
       to register crash keys. This is currently invoked from chrome_elf for debugging purposes.
    
    5. Changed the browser lib target to depend on chrome_elf:blacklist instead of chrome_elf. This prevents chrome_elf
       from being implicitly loaded in processes other than chrome.exe
    
    BUG=604923,crashpad:106, 568664
    TBR=robertshield
    
    Review-Url: https://codereview.chromium.org/2088133002
    Cr-Commit-Position: refs/heads/master@{#403048}
    34831427