| Index: base/debug/debugger_posix.cc | 
| diff --git a/base/debug/debugger_posix.cc b/base/debug/debugger_posix.cc | 
| index 796b0e8c528dcd13f87296996b3a352764f74028..4a95f3a789ea8cb27389e55e076172a37877741b 100644 | 
| --- a/base/debug/debugger_posix.cc | 
| +++ b/base/debug/debugger_posix.cc | 
| @@ -79,14 +79,21 @@ bool SpawnDebuggerOnProcess(unsigned process_id) { | 
| // Based on Apple's recommended method as described in | 
| // http://developer.apple.com/qa/qa2004/qa1361.html | 
| bool BeingDebugged() { | 
| +  // NOTE: This code MUST be async-signal safe (it's used by in-process | 
| +  // stack dumping signal handler). NO malloc or stdio is allowed here. | 
| +  // | 
| +  // While some code used below may be async-signal unsafe, note how | 
| +  // the result is cached (see |is_set| and |being_debugged| static variables | 
| +  // right below). If this code is properly warmed-up early | 
| +  // in the start-up process, it should be safe to use later. | 
| + | 
| // If the process is sandboxed then we can't use the sysctl, so cache the | 
| // value. | 
| static bool is_set = false; | 
| static bool being_debugged = false; | 
|  | 
| -  if (is_set) { | 
| +  if (is_set) | 
| return being_debugged; | 
| -  } | 
|  | 
| // Initialize mib, which tells sysctl what info we want.  In this case, | 
| // we're looking for information about a specific process ID. | 
| @@ -141,6 +148,9 @@ bool BeingDebugged() { | 
| // can't detach without forking(), and that's not so great. | 
| // static | 
| bool BeingDebugged() { | 
| +  // NOTE: This code MUST be async-signal safe (it's used by in-process | 
| +  // stack dumping signal handler). NO malloc or stdio is allowed here. | 
| + | 
| int status_fd = open("/proc/self/status", O_RDONLY); | 
| if (status_fd == -1) | 
| return false; | 
| @@ -229,6 +239,9 @@ bool BeingDebugged() { | 
| #endif | 
|  | 
| void BreakDebugger() { | 
| +  // NOTE: This code MUST be async-signal safe (it's used by in-process | 
| +  // stack dumping signal handler). NO malloc or stdio is allowed here. | 
| + | 
| DEBUG_BREAK(); | 
| #if defined(OS_ANDROID) && !defined(OFFICIAL_BUILD) | 
| // For Android development we always build release (debug builds are | 
|  |