forked from OSchip/llvm-project
Preserve a pointer to the newly allocated signal stack as well. That too
is flagged by LSan at least among leak detectors. llvm-svn: 279605
This commit is contained in:
parent
3a133159cc
commit
eb232dc90d
|
@ -120,11 +120,12 @@ static void RegisterHandler(int Signal) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_SIGALTSTACK)
|
#if defined(HAVE_SIGALTSTACK)
|
||||||
// Hold onto the old alternate signal stack so that it's not reported as a leak.
|
// Hold onto both the old and new alternate signal stack so that it's not
|
||||||
// We don't make any attempt to remove our alt signal stack if we remove our
|
// reported as a leak. We don't make any attempt to remove our alt signal
|
||||||
// signal handlers; that can't be done reliably if someone else is also trying
|
// stack if we remove our signal handlers; that can't be done reliably if
|
||||||
// to do the same thing.
|
// someone else is also trying to do the same thing.
|
||||||
static stack_t OldAltStack;
|
static stack_t OldAltStack;
|
||||||
|
static void* NewAltStackPointer;
|
||||||
|
|
||||||
static void CreateSigAltStack() {
|
static void CreateSigAltStack() {
|
||||||
const size_t AltStackSize = MINSIGSTKSZ + 64 * 1024;
|
const size_t AltStackSize = MINSIGSTKSZ + 64 * 1024;
|
||||||
|
@ -140,6 +141,7 @@ static void CreateSigAltStack() {
|
||||||
|
|
||||||
stack_t AltStack = {};
|
stack_t AltStack = {};
|
||||||
AltStack.ss_sp = reinterpret_cast<char *>(malloc(AltStackSize));
|
AltStack.ss_sp = reinterpret_cast<char *>(malloc(AltStackSize));
|
||||||
|
NewAltStackPointer = AltStack.ss_sp; // Save to avoid reporting a leak.
|
||||||
AltStack.ss_size = AltStackSize;
|
AltStack.ss_size = AltStackSize;
|
||||||
if (sigaltstack(&AltStack, &OldAltStack) != 0)
|
if (sigaltstack(&AltStack, &OldAltStack) != 0)
|
||||||
free(AltStack.ss_sp);
|
free(AltStack.ss_sp);
|
||||||
|
|
Loading…
Reference in New Issue