<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61698>61698</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
ASAN report wrong memory leak on MUSL libc OS
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
joyhou-hw
</td>
</tr>
</table>
<pre>
The code use std::Thread create a non return thread.
while the main funciton not join this thread, and return directly.
Compile with -fsanitize=address will report an 8bit and 48bit leak, that is thread_struct and pointer, on musl linux system.
But will OK on glibc OS。
I am not sure this is an issue in asan or in musl libc.
```
#include <string>
#include <chrono>
#include <thread>
#include <getopt.h>
#include <iostream>
#include <sys/time.h>
#include <unistd.h>
#include <sys/prctl.h>
namespace {
class TestTmp {
public:
TestTmp() :
procMsgThread_()
{
std::cout << "TestTmp construct: " << std::endl;
}
virtual ~TestTmp() {
std::cout << "TestTmp destruct: " << std::endl;
if (procMsgThread_.joinable()) {
procMsgThread_.join();
}
}
void Init() {
procMsgThread_ = std::thread(&TestTmp::BackgroundWorker, this);
}
void BackgroundWorker()
{
std::cout << "BackgroundWorker begin." << std::endl;
static_cast<void>(prctl(PR_SET_NAME, "test_work"));
while (true) {
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
}
std::thread procMsgThread_;
};
static TestTmp * longTimeObj = new TestTmp();
}
int main(int argc,char *argv[])
{
std::cout << "Process is started."<< std::endl;
longTimeObj->Init();
sleep(5);
return EXIT_SUCCESS;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVk9v6jgQ_zTmMioKDoRw4ECBStVuX58WnnZvyHGmiVvHjuxJWfawn33lJEChRbtvI2Qcz8xv_nsivFeFQZyzyT2brAaiodK6-as9lLa5K_eDzOaH-bZEkDZHaDyCp5zFCxYvtqVDkYN0KAhBgLEGHFLjDFBLGrJoxaLFvlQagUqESigDL42RiqwBYwlerQrcyvcijC9BmPyIkyuHkvRhCB1Uty5tVQfIvaIS4O7FC6NI_YUsXok8d-g9wF5pDQ5r6wiEgTRTBC3yuN1qFG9BF5WC4KR958k1klq-2ipD6AKTNVA1XoNWpvkT_METVr1v9w11qp5_CWyFVpmE5w1bxyyNWMo7rkcQVeuubxx27iofzFLeNwjKgPDCgHVh26vKZK-CJVH_6155rIzUTY7A4qUnp0zB4vVXRFk6a-wNYh_vr4kFkq1pWN4gK-vJoahukP3BM_5AqsKbCI1RnvKb5A6hdpL0R552NaJCXwuJwKb33ZHUwnvYoqdtVZ-P6ybTSoZibV8B4MjDeMr4DC5I4amdlU--6Cp713GdOU7AR_ZTK0jbULCbxUtgnB8tkdZ0FcXiRTg_spzk0OSaxfcfVazOL-_KUSM0_H1l9c-akeNPWhEe9QKMp5cBGYZ2FZnGPjJfGfM5jK1UL3Gt5cLfS-etyuHRKLrl9aUSYPHq7NHxMkkZT47Bawn3Qr4VzjYm_926t669Qz9e2_bZlM-S_7M4roEgw0KZ4X9OjCdBSu6k8MTiZbAtNEhIlSTNePr9t91mvd19Wzytg3eMc0JPu711b4zzLm2fQLs7mvGUXIM38_ohvsrvjjdIOPAasd692BCWs-P9_RP2ldJaeZTW5J7xdBRF0Q1TbpfEVXqvu_UIFGRO-3btQna-IPgCtDXFVlX4nL22pWNwf3k5XMB9wOpWZaidZoynYStcIRlfylK4gC5c8d4N1FOJnOL5hTtXBfLdWRlmmPIh144wD8Xxr7XxwaM7Fq_PrXPB1SaK8XRyTegn7vqPx-1u82O5XG82N0NwNZHadZDP43wWz8QA56NkOpvGMz5OBuU8n6Y5yqmYTcbJOIuiiI9HPI4xyRMxHY_EQM15xOMo5pNRNBpHkyGmk2SSSIFRNpkm8ZSNI6yE0kOt36uhdcWgnZvzZJTM0oEWGWrffsBwHtLYEkPEJquBmweZu6wpPBtHWnnyZxRSpHG-2Cy-Hb8U9s6aAiqsrDu03whhqD_92PwK_WAfNE7PS6LahyzwB8YfCkVlkw2lrRh_CNj9313t7CtKYvyhtShMtNbifwIAAP__Xn-5Gg">