<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">