diff options
author | Steven Laver <lavers@google.com> | 2020-01-23 17:03:34 -0800 |
---|---|---|
committer | Steven Laver <lavers@google.com> | 2020-01-23 17:03:34 -0800 |
commit | b60e31a87f1ca66a3e7bb59bafd53194069ce132 (patch) | |
tree | fa618ed3d605e46d9786cc80fd46a01c3010f3f4 /debuggerd/handler/debuggerd_handler.cpp | |
parent | 39fca9e854e544cfa8164acbf6ea18c9d6ed1262 (diff) | |
parent | 4b6d4901703230445a2bcf960e3610e891901cc1 (diff) |
Merge RP1A.200123.001
Change-Id: I9a5261600a4bbae9e68b1e7ee554be2fd1c7525c
Diffstat (limited to 'debuggerd/handler/debuggerd_handler.cpp')
-rw-r--r-- | debuggerd/handler/debuggerd_handler.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/debuggerd/handler/debuggerd_handler.cpp b/debuggerd/handler/debuggerd_handler.cpp index 0e36fdb2d..34dc45f36 100644 --- a/debuggerd/handler/debuggerd_handler.cpp +++ b/debuggerd/handler/debuggerd_handler.cpp @@ -596,19 +596,20 @@ void debuggerd_init(debuggerd_callbacks_t* callbacks) { g_callbacks = *callbacks; } - void* thread_stack_allocation = - mmap(nullptr, PAGE_SIZE * 3, PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + size_t thread_stack_pages = 8; + void* thread_stack_allocation = mmap(nullptr, PAGE_SIZE * (thread_stack_pages + 2), PROT_NONE, + MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); if (thread_stack_allocation == MAP_FAILED) { fatal_errno("failed to allocate debuggerd thread stack"); } char* stack = static_cast<char*>(thread_stack_allocation) + PAGE_SIZE; - if (mprotect(stack, PAGE_SIZE, PROT_READ | PROT_WRITE) != 0) { + if (mprotect(stack, PAGE_SIZE * thread_stack_pages, PROT_READ | PROT_WRITE) != 0) { fatal_errno("failed to mprotect debuggerd thread stack"); } // Stack grows negatively, set it to the last byte in the page... - stack = (stack + PAGE_SIZE - 1); + stack = (stack + thread_stack_pages * PAGE_SIZE - 1); // and align it. stack -= 15; pseudothread_stack = stack; |