Increase the size of the signal stack on 64-bit.
The signal stack is sufficiently large for a single invocation of the signal handler, but in cases where the signal handler needs to recurse, (e.g. if our address space is limited by RLIMIT_AS), it's too small for us to get to the part where we recognize that we've recursed and bail out. Bug: http://b/118772392 Test: /data/nativetest64/debuggerd_test/debuggerd_test64 --gtest_filter=CrasherTest.seccomp_crash_oom Change-Id: Ic7a2cf8b01b3f7ea7f4a2318a3ec22a0c3649da6
This commit is contained in:
parent
0c39bd468d
commit
f90687c4ec
|
@ -167,9 +167,14 @@ __LIBC_HIDDEN__ void pthread_key_clean_all(void);
|
|||
|
||||
// SIGSTKSZ (8KiB) is not big enough.
|
||||
// An snprintf to a stack buffer of size PATH_MAX consumes ~7KiB of stack.
|
||||
// Also, on 64-bit, logging uses more than 8KiB by itself:
|
||||
// https://code.google.com/p/android/issues/detail?id=187064
|
||||
// On 64-bit, logging uses more than 8KiB by itself, ucontext is comically
|
||||
// large on aarch64, and we have effectively infinite address space, so double
|
||||
// the signal stack size.
|
||||
#if defined(__LP64__)
|
||||
#define SIGNAL_STACK_SIZE_WITHOUT_GUARD (32 * 1024)
|
||||
#else
|
||||
#define SIGNAL_STACK_SIZE_WITHOUT_GUARD (16 * 1024)
|
||||
#endif
|
||||
|
||||
// Traditionally we gave threads a 1MiB stack. When we started
|
||||
// allocating per-thread alternate signal stacks to ease debugging of
|
||||
|
|
Loading…
Reference in New Issue