Mirror of Google Breakpad project
Go to file
Primiano Tucci 4d06db5a1f Linux ExceptionHandler: don't allocate the CrashContext on the stack
On Android the size of the alternate stack can be very small (8k).
Even if breakpad uses sigaltstack to increase the size of the alternate
stack during initialization, that call affects only the main thread.
On Android, the libc's pthread initializer reset the sigaltstack to 8k.
When entering a signal handler, the kernel typically pushes the context
on the alternate stack. On arm64, sizeof(CrashContext) is ~5k, which
leaves 3k of usable stack for breakpad.
On top of that, breakpad allocates another struct CrashContext on the
stack. In the case of Android arm64, then, breakpad ends up using
5k + 5k > 8k of stack, which causes a stack overflow.
This got unnoticed in Android L, as the alternate stack didn't have
red-zones between them, so breakpad was often happily overflowing onto
the next thread's stack. This is not the case anymore [1].
This CL moves the CrashContext into a global variable. It should be
safe as the ExceptionHandlers are serialized on a mutex.

[1] 595752f623

BUG=374
R=mark@chromium.org

Review URL: https://codereview.chromium.org/1354923002 .
2015-09-22 09:11:24 +01:00
android Misc Android-related fixes. 2013-12-13 16:49:11 +00:00
autotools synx with latest upstream gnuconfig 2015-04-18 03:25:50 +00:00
m4 Issue 378 - Don't compile Linux client libraries on non-Linux systems 2010-08-31 15:09:01 +00:00
src Linux ExceptionHandler: don't allocate the CrashContext on the stack 2015-09-22 09:11:24 +01:00
.gitignore Update gitignore to ignore more GYP things 2015-09-11 14:20:15 -04:00
aclocal.m4 Remove some old unused code, add a missing include 2015-08-13 16:38:19 +00:00
AUTHORS Make build system less annoying (#8) r=bryner 2006-08-30 20:05:05 +00:00
breakpad-client.pc.in make "make install" also install headers and pkgconfig files 2014-08-27 02:10:55 +00:00
breakpad.pc.in make "make install" also install headers and pkgconfig files 2014-08-27 02:10:55 +00:00
ChangeLog Initial import, which includes the Windows client-side dump_syms tool, and 2006-08-25 21:14:45 +00:00
codereview.settings Change codereview.settings to point to new repo URL. 2015-09-01 17:13:51 -07:00
configure Remove some old unused code, add a missing include 2015-08-13 16:38:19 +00:00
configure.ac make "make install" also install headers and pkgconfig files 2014-08-27 02:10:55 +00:00
DEPS deps: switch lss to git 2015-09-11 01:37:29 -04:00
INSTALL autoreconf -f -i 2013-12-10 17:53:50 +00:00
LICENSE Renaming file COPYING to LICENSE and appending the disclaimer from src/common/convert_UTF.h to LICENSE. 2014-02-27 19:23:16 +00:00
Makefile.am Fix Mac Breakpad host tools to build in Linux cross-compile 2015-09-16 06:46:55 -04:00
Makefile.in Fix Mac Breakpad host tools to build in Linux cross-compile 2015-09-16 06:46:55 -04:00
NEWS Initial import, which includes the Windows client-side dump_syms tool, and 2006-08-25 21:14:45 +00:00
README README: update dev documents w/new git flow 2015-09-11 01:38:20 -04:00
README.ANDROID Update breakpad to support Android NDK r10c 2014-10-21 13:50:27 +00:00

Breakpad is a set of client and server components which implement a
crash-reporting system.


-----
Getting started in 32-bit mode (from trunk)
Configure: CXXFLAGS=-m32 CFLAGS=-m32 CPPFLAGS=-m32 ./configure
    Build: make
     Test: make check
  Install: make install

If you need to reconfigure your build be sure to run "make distclean" first.


-----
To request change review:
0. Get a copy of depot_tools repo.
   http://dev.chromium.org/developers/how-tos/install-depot-tools

1. Create a new directory for checking out the source code.
   mkdir breakpad && cd breakpad

2. Run the `fetch` tool from depot_tools to download all the source repos.
   fetch breakpad

3. Make changes. Build and test your changes.
   For core code like processor use methods above.
   For linux/mac/windows, there are test targets in each project file.

4. Commit your changes to your local repo and upload them to the server.
   http://dev.chromium.org/developers/contributing-code
   e.g. git commit ... && git cl upload ...
   You will be prompted for credential and a description.

5. At https://codereview.chromium.org/ you'll find your issue listed; click on
   it, and select Publish+Mail, and enter in the code reviewer and CC
   google-breakpad-dev@googlegroups.com