forked from OSchip/llvm-project
[asan] Reduce flakiness in stack-overflow detection
IsStackOverflow only treats accesses within 512 bytes of SP as stack-overflow. This should really be the size of a page instead. The scariness_score_test.cc triggers stack overflow with frames that are even larger than a page, which can also trigger a fault that will not be recognized as stack-overflow. Let's just use smaller frames. llvm-svn: 329980
This commit is contained in:
parent
8fc5b84349
commit
0fb14e944c
|
@ -230,7 +230,9 @@ bool SignalContext::IsStackOverflow() const {
|
|||
// take it into account.
|
||||
bool IsStackAccess = addr >= (sp & ~0xFFF) && addr < sp + 0xFFFF;
|
||||
#else
|
||||
bool IsStackAccess = addr + 512 > sp && addr < sp + 0xFFFF;
|
||||
// Let's accept up to a page size away from top of stack. Things like stack
|
||||
// probing can trigger accesses with such large offsets.
|
||||
bool IsStackAccess = addr + GetPageSizeCached() > sp && addr < sp + 0xFFFF;
|
||||
#endif
|
||||
|
||||
#if __powerpc__
|
||||
|
|
|
@ -115,7 +115,7 @@ void DoubleFree() {
|
|||
}
|
||||
|
||||
void StackOverflow(int Idx) {
|
||||
int some_stack[10000];
|
||||
int some_stack[256];
|
||||
static volatile int *x;
|
||||
x = &some_stack[0];
|
||||
if (Idx > 0)
|
||||
|
|
Loading…
Reference in New Issue