| Index: third_party/tcmalloc/vendor/src/stacktrace_x86-inl.h
|
| diff --git a/third_party/tcmalloc/vendor/src/stacktrace_x86-inl.h b/third_party/tcmalloc/vendor/src/stacktrace_x86-inl.h
|
| index a140ab6b01754230c745e84d581993ef04f524fb..9d76342a14484c29cb41ffc221e7129cdfdccd47 100644
|
| --- a/third_party/tcmalloc/vendor/src/stacktrace_x86-inl.h
|
| +++ b/third_party/tcmalloc/vendor/src/stacktrace_x86-inl.h
|
| @@ -64,7 +64,7 @@ typedef ucontext ucontext_t;
|
| #include "base/vdso_support.h"
|
| #endif
|
|
|
| -#include "google/stacktrace.h"
|
| +#include "gperftools/stacktrace.h"
|
|
|
| #if defined(__linux__) && defined(__i386__) && defined(__ELF__) && defined(HAVE_MMAP)
|
| // Count "push %reg" instructions in VDSO __kernel_vsyscall(),
|
| @@ -238,9 +238,14 @@ static void **NextStackFrame(void **old_sp, const void *uc) {
|
| // In the non-strict mode, allow discontiguous stack frames.
|
| // (alternate-signal-stacks for example).
|
| if (new_sp == old_sp) return NULL;
|
| - // And allow frames upto about 1MB.
|
| - if ((new_sp > old_sp)
|
| - && ((uintptr_t)new_sp - (uintptr_t)old_sp > 1000000)) return NULL;
|
| + if (new_sp > old_sp) {
|
| + // And allow frames upto about 1MB.
|
| + const uintptr_t delta = (uintptr_t)new_sp - (uintptr_t)old_sp;
|
| + const uintptr_t acceptable_delta = 1000000;
|
| + if (delta > acceptable_delta) {
|
| + return NULL;
|
| + }
|
| + }
|
| }
|
| if ((uintptr_t)new_sp & (sizeof(void *) - 1)) return NULL;
|
| #ifdef __i386__
|
|
|