We have been using the Intel MKL and its Pardiso solver for quite some time, and did suddenly run into a problem where the solver would crash randomly when trying to solve one particular problem.
We were able to reproduce this in a small test application where the same problem (a 2D Poisson problem actually) is solved over and over again, and after a few thousand iterations, the solver would crash at this location:
MKLCrash.exe!mkl_pds_lp64_blkslvs1_omp_pardiso() + 0x1b26 bytes
MKLCrash.exe!__kmp_invoke_microtask() + 0x8c bytes Asm
MKLCrash.exe!__kmp_fork_call() + 0x9e8 bytes
MKLCrash.exe!__kmpc_fork_call() + 0x6c bytes
MKLCrash.exe!mkl_pds_lp64_blkslvs1_omp_pardiso() + 0x71f bytes
MKLCrash.exe!mkl_pds_lp64_sssslv_pardiso() + 0x117c bytes
MKLCrash.exe!mkl_pds_lp64_solve_pardiso() + 0x422 bytes
MKLCrash.exe!mkl_pds_lp64_do_all_pardiso_fc() + 0x15a2 bytes
MKLCrash.exe!mkl_pds_lp64_pardiso_c() + 0x18cd bytes
MKLCrash.exe!mkl_pds_lp64_pardiso() + 0x4a8 bytes
MKLCrash.exe!mkl_pds_lp64_dss_solve_real() + 0x2bb bytes
MKLCrash.exe!dss_solve_real() + 0x3f bytes
MKLCrash.exe!solver_crash_test() Line 358 C++
We were abel to reproduce this on Windows (using MKL 10.3) as well as OS X (using MKL 11). The crash location seems to be the same on both platforms. I've attached the source code for our test application as well as crash logs.
Our test application is really quite minimal, so I suspect a concurrency bug in the solver. Can anyone confirm this?