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)
|
||||
// Hold onto the old alternate signal stack so that it's not reported as a leak.
|
||||
// We don't make any attempt to remove our alt signal stack if we remove our
|
||||
// signal handlers; that can't be done reliably if someone else is also trying
|
||||
// to do the same thing.
|
||||
// Hold onto both the old and new alternate signal stack so that it's not
|
||||
// reported as a leak. We don't make any attempt to remove our alt signal
|
||||
// stack if we remove our signal handlers; that can't be done reliably if
|
||||
// someone else is also trying to do the same thing.
|
||||
static stack_t OldAltStack;
|
||||
static void* NewAltStackPointer;
|
||||
|
||||
static void CreateSigAltStack() {
|
||||
const size_t AltStackSize = MINSIGSTKSZ + 64 * 1024;
|
||||
|
@ -140,6 +141,7 @@ static void CreateSigAltStack() {
|
|||
|
||||
stack_t AltStack = {};
|
||||
AltStack.ss_sp = reinterpret_cast<char *>(malloc(AltStackSize));
|
||||
NewAltStackPointer = AltStack.ss_sp; // Save to avoid reporting a leak.
|
||||
AltStack.ss_size = AltStackSize;
|
||||
if (sigaltstack(&AltStack, &OldAltStack) != 0)
|
||||
free(AltStack.ss_sp);
|
||||
|
|
Loading…
Reference in New Issue