144830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany#include <pthread.h>
244830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany#include <stdlib.h>
344830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany#include <stdio.h>
444830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany
544830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryanyconst int N = 1000;
644830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryanyvoid *x[N];
744830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany
8552c6702493cfcab356d3aa94becf50ff019838bKostya Serebryanyvoid *Thread1(void *unused) {
944830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  for (int i = 0; i < N; i++) {
102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines    fprintf(stderr, "%s %d\n", __func__, i);
1144830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany    free(x[i]);
1244830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  }
1344830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  return NULL;
1444830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany}
1544830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany
16552c6702493cfcab356d3aa94becf50ff019838bKostya Serebryanyvoid *Thread2(void *unused) {
1744830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  for (int i = 0; i < N; i++) {
182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines    fprintf(stderr, "%s %d\n", __func__, i);
1944830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany    free(x[i]);
2044830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  }
2144830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  return NULL;
2244830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany}
2344830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany
2444830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryanyint main() {
2544830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  for (int i = 0; i < N; i++)
2644830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany    x[i] = malloc(128);
2744830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  pthread_t t[2];
2844830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  pthread_create(&t[0], 0, Thread1, 0);
2944830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  pthread_create(&t[1], 0, Thread2, 0);
3044830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  pthread_join(t[0], 0);
3144830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany  pthread_join(t[1], 0);
3244830c2f85f417bd486b49a53d97c640dd75728eKostya Serebryany}
33