https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86088
Bug ID: 86088
Summary: #pragma omp parallel for freezes if other processes
are running
Product: gcc
Version: 8.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgomp
Assignee: unassigned at gcc dot gnu.org
Reporter: shibatch at users dot sourceforge.net
CC: jakub at gcc dot gnu.org
Target Milestone: ---
The following small program takes more than 20 seconds to finish.
It quickly finishes if compiled with clang.
It finishes instantly without fork().
OS: Ubuntu 16.04.4 LTS
CPU: Core i7-6700
$ gcc-8.1.0 -fopenmp stall.c
$ time ./a.out
real 0m26.846s
user 1m47.288s
sys 0m0.004s
$ clang-6.0 -fopenmp stall.c
$ time ./a.out
real 0m0.423s
user 0m1.244s
sys 0m0.012s
--
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#define SIZEA 100
#define SIZEB 10000
unsigned char a[SIZEA * SIZEB], b[SIZEA * SIZEB];
int main(int argc, char **argv) {
fork();
int i;
for(i=0;i<1000;i++) {
int y;
#pragma omp parallel for
for(y=0;y<SIZEA;y++) memcpy(&a[y*SIZEB], &b[y*SIZEB], SIZEB);
}
}