From 269aa74aed43780b88f32f89f7407da539da15d5 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 24 Oct 2021 14:19:16 +0200 Subject: [PATCH] tsan: add another use-after-free race test Add a test where a race with free is called during the free itself (we only have tests where a race with free is caught during the other memory acces). Reviewed By: melver Differential Revision: https://reviews.llvm.org/D112433 --- compiler-rt/test/tsan/free_race3.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 compiler-rt/test/tsan/free_race3.c diff --git a/compiler-rt/test/tsan/free_race3.c b/compiler-rt/test/tsan/free_race3.c new file mode 100644 index 000000000000..55efd6e12134 --- /dev/null +++ b/compiler-rt/test/tsan/free_race3.c @@ -0,0 +1,29 @@ +// RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s + +#include "test.h" + +int *mem; + +void *Thread(void *x) { + mem[0] = 42; + barrier_wait(&barrier); + return NULL; +} + +int main() { + barrier_init(&barrier, 2); + mem = (int*)malloc(100); + pthread_t t; + pthread_create(&t, 0, Thread, 0); + barrier_wait(&barrier); + free(mem); + pthread_join(t, NULL); + return 0; +} + +// CHECK: WARNING: ThreadSanitizer: data race +// CHECK: Write of size 8 at {{.*}} by main thread{{.*}}: +// CHECK: #0 free +// CHECK: #1 main +// CHECK: Previous write of size 4 at {{.*}} by thread T1{{.*}}: +// CHECK: #0 Thread