Created attachment 4001 deadlock-free proposed patch
Revised patch; unfortunately, the ATOMIC_FASTBINS stuff makes the code fairly ugly now... getting rid of the #if 0 bit might help a little.
Without this patch, this crashes in few tens of seconds on my four-core when run with MALLOC_CHECK_=3:
/* compile with -fopenmp */ #include <stdlib.h> #include <unistd.h>
int main(void) { #pragma omp parallel num_threads(256) while (1) { void *ptr = malloc(rand() % 65536); usleep((rand() % 100) * 100); free(ptr); usleep((rand() % 100) * 100); } return 0; }
Created attachment 4001
deadlock-free proposed patch
Revised patch; unfortunately, the ATOMIC_FASTBINS stuff makes the code fairly
ugly now... getting rid of the #if 0 bit might help a little.
Without this patch, this crashes in few tens of seconds on my four-core when
run with MALLOC_CHECK_=3:
/* compile with -fopenmp */
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
#pragma omp parallel num_threads(256)
while (1) {
void *ptr = malloc(rand() % 65536);
usleep((rand() % 100) * 100);
free(ptr);
usleep((rand() % 100) * 100);
}
return 0;
}