aboutsummaryrefslogtreecommitdiff
path: root/src/client/linux/handler/exception_handler.h
diff options
context:
space:
mode:
authorted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-08-27 13:18:49 +0000
committerted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-08-27 13:18:49 +0000
commit662b6da59dd0218ea5496c085cb010d59f2b4219 (patch)
treeced5b72093c58391401745b04260db1376aef2f4 /src/client/linux/handler/exception_handler.h
parentLimit the number of frames we try to walk to prevent runaway processors. (diff)
downloadbreakpad-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.h9
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