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 return NULL;
15}
16
17int main() {
18 pthread_t t;
19 pthread_create(newthread: &t, NULL, start_routine: ThreadFn, NULL);
20 pthread_join(th: t, NULL);
21 return 0;
22}
23

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