<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63313>63313</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Leak Sanitizer reports leaks on `sigaltstack` pointers.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          mvanotti
      </td>
    </tr>
</table>

<pre>
    LSAN is reporting leaks for legit uses of the `sigaltstack` .

See the following example:

```c++
#include <signal.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>

constexpr size_t kSigaltstackSize = 0x1000 * 10;

int main(void) {
  uintptr_t new_sigaltstack =
 reinterpret_cast<uintptr_t>(malloc(kSigaltstackSize)) + kSigaltstackSize;

  stack_t ss = {.ss_sp = reinterpret_cast<void *>(new_sigaltstack),
                .ss_flags = 0,
 .ss_size = kSigaltstackSize};
  sigaltstack(&ss, NULL);

  return 0;
}
```

compiled with `clang++ -fsanitize=leak program.cc -o program`

Returns:

```
=================================================================
==407264==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 40960 byte(s) in 1 object(s) allocated from:
    #0 0x5607c7b1df32 in malloc (/home/user/program+0x2ff32) (BuildId: 1fd845c27ab0d578242521bcf8e1508798c8bbcd)
    #1 0x5607c7b20688 in main (/home/user/program+0x32688) (BuildId: 1fd845c27ab0d578242521bcf8e1508798c8bbcd)
    #2 0x7fed3d367189 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:10:10

SUMMARY: LeakSanitizer: 40960 byte(s) leaked in 1 allocation(s).
```

Would it be possible for LSAN to treat the sigaltstack as a global variable?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVc1u4zYQfhr6MohAkfqhDz7Y8RookN0CCRZFTwYljWQ2lCiQVOLs0xek7MRx0vTSSw2CFjnDmW_-pXOqGxBXJN-QfLuQkz8Yu-qf5GC8V4vKNC-ru4f1D1AOLI7GejV0oFE-OmiNBY2d8jA5dGBa8AcEUlCnOqm987J-JAWFhNAtoet5f0CMbK3R2jwHYXiU_aiR8PUlHynovGrCNmHNt4yrodZTg0D4bcAudXIg_NunZN802H5FVoP_iqxVdUmOe20G5_E4WnDqF-49PD68WfugfoW3W6DHlFIKhK0hpYRvLiWowUMv1UCYeDKqIWwJpDxxAExq8KO3ew8DPu8vPBnknpgsqsGjHS36fS2dJ_z29VmAy0QvtTY1YeIaHWHLqJBtPgC_ggkQKXsPzkWbSLlJnNu7MZ4-wRCsCSbPEK7gR8W3Z9Hvf0Fsq2U366FvfFHf2acf8JbbV8gA71QJwgrnCLuFHz_v7oLqa9ss-skOcBGbcnuVeO-j3o9KYwPPyh9CitdaDt2cmXDTOjkoH124DaUBozWdlX1S13BjzqcrkfcRgfuntD8d-fZ_vy4MyWjJimz-_nZ___s94Wu4Q_n4cHKgDRcNeqw9NtBjb-zL3G0unbRVFmsf70PXyeiyoFC9eCRMuJDeaoAUTPUX1v58FQtCBqmtNf2r10P6EcYp0GNe0LIuq7RpOQsS5hqCmE27g-mRsN3k0BK2O0eUbeiRtS1nc02JzaR081sTjEjbRmR5zUpZ0SYvBctYztKqbgWmORXlUtSiqupQ_u-QpG9IGC2EmJGo4V9xcFYI8d_hYECPZYsNb3hRpiL6dL_Xqqr3zksbil7rfURWu4mwXZIQtnMvrsHREbYbRq8J2332IPTUdWiLYbscDT-_f1_f__lpTnyMcYg-NnOoT8FVZjhRky9q-Q8z6QaUhwphNM6pSmOcZXHOeQPeovRxSF22X-lAQqdNJTU8SatkFWbWbtGseLPkS7nAVVqIoixKWrDFYYWMVlRmKFgmRFG0ZZbTtipLWrW0XLLlQq0YZZwWaZaGqLBElG2ei1y2eSargnOSUeyl0onWT31ibLdQzk24KjhP-ULLCrWLg5uxAZ8hEgljYY7bVXhzU02dIxnVynn3JsUrr3EVXAyvPj4Nd3ca7Wb4ZI6PJrZ8lywmq1cH78fYvdiOsF2n_GGqktr0Iej66fx3M1ozl-Eu4gupEfH_HQAA__9XcXUF">