VML function crashes on Windowns 7 if linked through mkl_rt
We got random crashes with VML functions, e.g., zsqrt(), if the following conditions are ALL met:
1) on a Windowns 7 machine
2) MKL is linked through single dynamic library mkl_rt.lib
3) The VML function is called within an Intel TBB parallel session, e.g., parallel_for()
4) TBB is using more than one (1) thread
The crash occurs no matter which library mkl_rt specify to use (intel threading, sequential or tbb threading).
A piece of code that can be used to describe what we are doing is attached. In the testing, we wrote a batch file to run the program repeatedly to catch the random crash. Normally we would catch the crash within 100 times of running.
We tried linking directly with mkl_intel_threading_dll.lib, mkl_sequential_dll.lib or mkl_tbb_threading_dll.lib, all are fine with no crash. The problem seems to be with linking through mkl_rt alone.
We use the most updated MKL 2018.3.210
Does anyone run into the same issue? Many thanks for any input/response.
By 'random' I mean the crash does not happen every time we ran the test. If one run the test 100 times, he might get 5 crashes while the rest 95 times are just fine. As such we used a batch file to run it repeatedly. Usually we would catch a first crash within 20 times of running.
So far we got this crash on two different Windows 7 machine. The specifications of these machines are:
Kernel version: Windows 7 Professional, Multiprocessor Free
Product type: Professional
Product version: 6.1
Kernel build number: 7601
Processor speed: 3.3 GHz
Processor type: Intel(R) Core(TM) i7-3770 CPU @
Physical memory: 7096 MB
Windows 7 Professional
Kernel version: 6.1.7601.24150
Processor speed: 2.8 GHz
Processor type: Intel(R) Core(TM) i7-4810MQ CPU @
Physical memory: 16 GB
BTW, there is a bit of code missing in the cpp file I attached to my last post. I have uploaded an updated one. Please use this instead.
Thank you in advance for looking into this.
To make the testing easier to repeat, I uploaded the entire Visual Studio project (in a zip file) that we used to generate the console testing program. It contains all the libraries and dlls needed. Please load the solution file (mkl_rt_bug.sln) into Visual Studio and build under Release mode. You will get an executable file mkl_rt_bug.exe under x64\Release. As I stated before, the crash occurs unpredictably at each time it runs, so we also included a batch file testloop.bat, which can be used to run the exe repeatedly. If you have any problems with the project, please let me know.
Once again, we only saw this crash when the MKL is linked through mkl_rt.lib. If MKL is linked directly, e.g., through mkl_intel_thread_dll.lib, etc., all are good. Switching between these two linkage modes is also implemented in the testing program. Please read the comments in the code to see how to switch between them (a simple #define).
A bit more information. We ran the test on a virtual machine which runs Window 7, and it crashed too. Since it is a virtual machine, we think the crash should have less to do with the hardware than with the software.