<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/144137>144137</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[tsan] Error message and hang involving signals
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
tavianator
</td>
</tr>
</table>
<pre>
The following test program:
```c
#include <errno.h>
#include <signal.h>
#include <stdatomic.h>
#include <sys/wait.h>
#include <unistd.h>
static atomic_int n = 0;
static void handler(int sig, siginfo_t *info, void *context) {
int x = atomic_load_explicit(&n, memory_order_relaxed);
while (!atomic_compare_exchange_weak_explicit(&n, &x, x + 1,
memory_order_acquire, memory_order_relaxed)) {
}
}
int main(void) {
struct sigaction action = {
.sa_sigaction = handler,
.sa_flags = SA_RESTART | SA_SIGINFO,
};
sigemptyset(&action.sa_mask);
sigaction(SIGPIPE, &action, NULL);
pid_t pid = fork();
if (pid > 0) {
usleep(1000);
kill(pid, SIGPIPE);
waitpid(pid, NULL, 0);
} else if (pid == 0) {
while (atomic_load(&n) < 1) {
usleep(1);
}
}
return 0;
}
```
Reliably prints this message and hangs:
```console
$ clang -Wall -fsanitize=thread foo.c -o foo
$ ./fo
ThreadSanitizer: CHECK failed: tsan_interceptors_posix.cpp:2107 "((thr->slot)) != (0)" (0x0, 0x0) (tid=620758)
^C
$ clang --version
clang version 20.1.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8VVtvq7gT_zTOi5XIGXKBBx44uZx_9T86e9R2tY_IgQG8NTZrm5Tup1_ZkLTZtGshfJnf3Gdsbq2oFWJK1t_Iej_jvWu0SR0_C66402Z20uVb-twgrbSU-lWomjq0jnZG14a3JMoIC9-GjV_hNxAJVci-REqiHRqj9KIh0eGO5LVz-QXNldzpVhRfkN8sgeMrF-5zeq-EdeWVxjLruBMFHWXmQjmqKIn2lJHo2w3irEVJG65KiYZA7JFW1AR2fhKq0rmjBDK_8ocBTiArtHI4OAIJJVsvkU7DCxiCqkm31LzMceikKIQjEBPYKC-pxVabt1ybEk1uUPIBSwLJaN9F2msjJNLAtZzkFbrtuMEch6Lhqsb8FfnLZwoIbAY_D5TAN7oksPOCb9Ty4q9eGPwvc-4cJNu9D-D4Z5n3t-VCEYh9bO7x1pm-CEHlhRNa0WnyIZqQC8vzd7onXBOy-yDpMjy8kry2AfqU5Y-Hp-fs8ZmS7c5vnx6-P_w8_nbL7A2-Ca0VNbade7M4BW1U74W33L68p-JqGYH46eH7r4dfhym8l-Md_fn7jx9Xjg9KOlHmzv-DqZU2L0HXB6CofHpHxIGy-_hdRm8lYkcgXjLG7grlMl6ElKM8b9bV3C_QvqEC9MIw-rGj9wrIdk9RWrwxeD-21Jc2X8v3Qy9cKzTxjevr8sr97uKXFo91969afD8w6Hqjrl0-ki-X1Qh9RCn4Sb7RzgjlLHWNsLRFa3mNlKtwGdT2k6tOK6slhqtnRQvJVU3nf3Ap6byyXAkn_kYS7V1jkJe00npR0Ln2i4llQeBY-c1zgDxNPIZEGd3977D7P624kFj6vbNc-VsLTYGd08bmnbZiWBRdR6IMlmxLCUAIZewaMyfRwUrtLg0Ly9BdEIc8AoTlwEJmhzFfEDtRkmi_AbZdh5JkGVkfdrf-zc9orK9xlo0n054CWywXG-8MNzU6b_MQb_LNat4VcylUP8xr1V-dpa0uUXpU8IOw7EFZx6XEci9CBAgce2sIHE9CfQz7rEyjMokSPsN0uV0lcRQnsJo1aVxAkiRVVGJ8gmRb8O0mTuKk2iTrGCLOZyIFBmu2WUbLGICtFgwTllTAeYnIq4iRFcOWC7mQ8twutKlnwtoe0-VqtYy2M8lPKG14LAEUvtJA9WFf72cm9UzzU19bsmJSWGffxTjhZHhlfRrJek8PxmhzV2RUqLOWZ__Kjk-jnfVGpo1zXag_OBI41sI1_WlR6JbA0WuYpnln9J9YOALHYJd_HyfDzyn8EwAA___960lS">