C++ compiler 18.0.2 is crashing when using OpenMP and C++11 lambda capture.
Here is a minimial crashing example:
template < typename Function >
void call_1( const Function& f )
{
f();
}
template < typename Function >
void call_2( const Function& f )
{
f();
}
int main(int argc, char **argv)
{
double count = 0;
call_1([&count](){
#pragma omp parallel
call_2([&count](){});
});
}And here is the output:
$ icc --version icc (ICC) 18.0.2 20180210 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. $ icc -qopenmp main.cpp ": internal error: ** The compiler has encountered an unexpected problem. ** Segmentation violation signal raised. ** Access violation or stack overflow. Please contact Intel Support for assistance. icc: error #10105: /opt/intel/compilers_and_libraries_2018.2.199/linux/bin/intel64/mcpcom: core dumped icc: warning #10102: unknown signal(36194064) icc: error #10106: Fatal error in /opt/intel/compilers_and_libraries_2018.2.199/linux/bin/intel64/mcpcom, terminated by unknown compilation aborted for main.cpp (code 1)
Is this a known issue? Should i avoid using lambda capture with OpenMP?