1// RUN: %clang_hwasan %s -o %t && %env_hwasan_opts=random_tags=1 %run %t
2
3#include <pthread.h>
4#include <sanitizer/hwasan_interface.h>
5#include <stdio.h>
6#include <stdlib.h>
7#include <string.h>
8
9void *ThreadFn(void *) {
10 strerror_l(errnum: -1, l: 0);
11 __hwasan_enable_allocator_tagging();
12 // This will trigger memory deallocation in __strerror_thread_freeres,
13 // at a point when HwasanThread is already gone.
14}
15
16int main() {
17 pthread_t t;
18 pthread_create(newthread: &t, NULL, start_routine: ThreadFn, NULL);
19 pthread_join(th: t, NULL);
20 return 0;
21}
22

source code of compiler-rt/test/hwasan/TestCases/libc_thread_freeres.c