llvm-project

Форк
0
/
fd_close_race.cpp 
26 строк · 573.0 Байт
1
// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s
2
#include "test.h"
3
#include <fcntl.h>
4
#include <sys/stat.h>
5
#include <sys/types.h>
6

7
void *Thread(void *arg) {
8
  char buf;
9
  read((long)arg, &buf, 1);
10
  barrier_wait(&barrier);
11
  return NULL;
12
}
13

14
int main() {
15
  barrier_init(&barrier, 2);
16
  int fd = open("/dev/random", O_RDONLY);
17
  pthread_t t;
18
  pthread_create(&t, NULL, Thread, (void *)(long)fd);
19
  barrier_wait(&barrier);
20
  close(fd);
21
  pthread_join(t, NULL);
22
  fprintf(stderr, "DONE\n");
23
}
24

25
// CHECK: WARNING: ThreadSanitizer: data race
26
// CHECK: DONE
27

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.