title: Using OpenMP and Eigen causes infinite loop/deadlock
body: <p>I'm solving a much larger problem and have run into a bug when I try to use OpenMP to parallelize some loops. I've reproduced the problem with some simpler code below that mimics my own code.</p>
  
  <p>The problem is that when I run the program, it will randomly go into some sort of infinite loop/deadlock (CPU is 100%, but doesn't do anything). From what I can tell from my testing, one of the threads attempts to compute the matrix-matrix product but never finishes for some reason.</p>
  
  <p>I know that if you enable OpenMP, Eigen will parallelize matrix-matrix products using OpenMP . I'm also adding another parallel loop outside of this. However, this bug still occurs if I disable Eigen's parallelization by defining EIGEN_DONT_PARALLELIZE.</p>
  
  <p>I'm using gcc version 4.6.0 20101127 on MacOS 10.6.8 with Eigen 3.0.4.</p>
  
  <p>I can't figure out what could be going wrong...</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;Eigen/Core&gt;
  
  using namespace std;
  using namespace Eigen;
  
  MatrixXd Test(MatrixXd const&amp; F, MatrixXd const&amp; G)
  {
    MatrixXd H(F.rows(), G.cols());
    H.noalias() = F*G;
  
    return H;
  }
  
  int main()
  {
    MatrixXd F = MatrixXd::Random(2,2);
    MatrixXd G = MatrixXd::Random(2,2);
  
    #pragma omp parallel for
    for (unsigned int i = 0; i &lt; 10000; ++i)
      MatrixXd H = Test(F,G);
  
    cout &lt;&lt; "Done!" &lt;&lt; endl;
  }
  </code></pre>