diff options
author | ted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-08-27 13:18:49 +0000 |
---|---|---|
committer | ted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-08-27 13:18:49 +0000 |
commit | 662b6da59dd0218ea5496c085cb010d59f2b4219 (patch) | |
tree | ced5b72093c58391401745b04260db1376aef2f4 /src/client/linux/handler/exception_handler.h | |
parent | Limit the number of frames we try to walk to prevent runaway processors. (diff) | |
download | breakpad-662b6da59dd0218ea5496c085cb010d59f2b4219.tar.xz |
Allow Linux dumper to work on PTRACE-hardened kernels
A=Chris Coulson <chris.coulson@canonical.com>
R=nealsid at http://breakpad.appspot.com/166001/show
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@673 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/linux/handler/exception_handler.h')
-rw-r--r-- | src/client/linux/handler/exception_handler.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/client/linux/handler/exception_handler.h b/src/client/linux/handler/exception_handler.h index 2a497037..497b1cc0 100644 --- a/src/client/linux/handler/exception_handler.h +++ b/src/client/linux/handler/exception_handler.h @@ -184,6 +184,8 @@ class ExceptionHandler { void UninstallHandlers(); void PreresolveSymbols(); bool GenerateDump(CrashContext *context); + void SendContinueSignalToChild(); + void WaitForContinueSignal(); void UpdateNextID(); static void SignalHandler(int sig, siginfo_t* info, void* uc); @@ -223,6 +225,13 @@ class ExceptionHandler { // A vector of the old signal handlers. std::vector<std::pair<int, struct sigaction *> > old_handlers_; + + // We need to explicitly enable ptrace of parent processes on some + // kernels, but we need to know the PID of the cloned process before we + // can do this. We create a pipe which we can use to block the + // cloned process after creating it, until we have explicitly enabled + // ptrace. This is used to store the file descriptors for the pipe + int fdes[2]; }; } // namespace google_breakpad |