Эта минимальная программа OpenMP
#include
int main()
{
#pragma omp parallel sections
{
#pragma omp section
{
while(1) {}
}
#pragma omp section
{
while(1) {}
}
}
}
выдаст эту ошибку при компиляции и запуске сgcc test.c -fopenmp
:
Illegal instruction (core dumped)
Когда я меняю один из циклов с помощью
int i=1;
while(i++) {}
или любое другое условие, которое компилируется и выполняется без ошибок. Кажется, 1
как условие цикла в разных потоках вызывает странное поведение. Почему?
редактировать:Я использую gcc 4.6.3
редактировать:Это ошибка в gcc, и она была отправлена разработчикам gcc как ошибка 54017 .