One thing I was thinking about is that I'm using a deprecated function. They recommend to use D3DCompile instead. After doing some search, with D3DCompile, some users on Windows 7 get an error they're missing D3dcompiler_47.dll so it's not any better.
Writing a log would be complicated... I'd have to write the code for it and send it to that user. It can be done but I'd first want to get an idea of where it could be failing.
Yes the code is multi-threaded. In this case, it is failing during the initialization phase that is being called here. In his case, a single instance of the class gets created so there cannot be a race condition during initialization.
Any other idea? Is there some kind of system or DLL dependency for calling this function?