#include<pthread.h>
#include <goblint.h>

int x = 1;
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;

void *t_fun(void *arg) {
  pthread_mutex_lock(&mutex1);
  if (x == 1) { // NORACE
    pthread_mutex_unlock(&mutex1);
    return NULL;
  }
  pthread_mutex_unlock(&mutex1);
  x = -1; // NORACE
  return NULL;
}

int main(void) {
  pthread_t id;
  __goblint_check(x == 1);
  pthread_create(&id, NULL, t_fun, NULL);
  pthread_mutex_lock(&mutex1);
  x = 0; // NORACE
  __goblint_check(x == 0);
  x = 1; // NORACE
  pthread_mutex_unlock(&mutex1);
  pthread_join (id, NULL);
  return 0;
}
