diff options
author | digit@chromium.org <digit@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2012-10-09 18:03:25 +0000 |
---|---|---|
committer | digit@chromium.org <digit@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2012-10-09 18:03:25 +0000 |
commit | f72b9c6ff4b6c48d4a2239c7da31e5dbf220c440 (patch) | |
tree | 4ceb0e9c515073e1ab5cc914491f786f5d4ada44 /src/client/mac/tests/spawn_child_process.h | |
parent | Fix the Android unit tests. (diff) | |
download | breakpad-f72b9c6ff4b6c48d4a2239c7da31e5dbf220c440.tar.xz |
Make Linux signal handler more robust.
Breakpad can be used on processes where a mistaken
library saves then restores one of our signal handlers
with 'signal' instead of 'sigaction'.
This loses the SA_SIGINFO flag associated with the
Breakpad handler, and in some cases (e.g. Android/ARM
kernels), the values of the 'info' and 'uc' parameters
that ExceptionHandler::SignalHandler() receives will
be completely bogus, leading to a crash when the function
is executed (and of course, no minidump generation).
To work-around this, have SignalHandler() check the state
of the flag. If it is incorrectly unset, re-register with
'sigaction' and the correct flag, then return. The signal
will be re-thrown, and this time the function will be
called with the correct values.
Review URL: https://breakpad.appspot.com/481002
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1067 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/mac/tests/spawn_child_process.h')
0 files changed, 0 insertions, 0 deletions