Fork me on GitHub
#uncomplicate
<
2021-11-03
>
Empperi09:11:59

Hi. It's me again with my weird Windows problems. So, I think it was back in September I mentioned an issue where Neanderthal fails to initialize during macro expansion since it cannot load a mkl dll file. I'm now using a different computer (this time Intel CPU) and I'm facing exactly the same issue. So I'm leaning towards this being a more generic issue as it is. I've been debugging this every now and then for the past couple of months during my free time. The error is this:

{:type java.lang.UnsatisfiedLinkError
   :message C:\Users\Niklas\AppData\Local\Temp\neanderthal-mkl-0.33.013762547502008737550.dll: Can't find dependent libraries
   :at [jdk.internal.loader.NativeLibraries load NativeLibraries.java -2]}]
Which would imply that the given dll file is not there. It is there however:
> ls C:\Users\Niklas\AppData\Local\Temp\neanderthal*.dll | select -exp name
neanderthal-mkl-0.33.013762547502008737550.dll
Which means this error is misleading. I can confirm this by entering debugger within NarSystem.class where I can see that it indeed extracts that specific path and that the System.load(extracted.getPath()); is called which then throws this exception. But why? That file is there and it's readable. So, I dug deeper and downloaded https://github.com/lucasg/Dependencies to debug dll internal dependencies. With that, I could see that mkl_rt.dll was missing or at least it couldn't find it. I dug into mkl-2021.3-1.5.6-windows-x86_64-redist.jar and found there a file called mkl_rt.1.dll - a suspiciously closely named file but not quite the same. Next I extracted the jar into a folder, renamed that dll file to correspond to what the original dll was requiring, then created a jar file out of that and replaced the original file with it. Now, if I try to run the application it just hangs. No errors this time around however so I'm definitely up to something. This is how far I've got so far. I'm open for ideas. Anyway, it looks to me that some of these libraries are not up to date regarding what they are referring to. Ping @blueberry on this