D3DXMatrixLookAtLH exception after windows 7 update

Started by
5 comments, last by ArcticHammer 11 years, 4 months ago
Dear all,

we have a 3D software component written by using SlimDX January 2012 .NET4. It's a DirectX 9.0c app.

One of our users have now reported a problem after windows update. It's a Win 7 machine. The software was working correctly but after Windows update that was run about 2 weeks ago, the following exception is thrown:
System.Runtime.InteropServices.SEHException (0x80004005): External component has thrown an exception.
at D3DXMatrixLookAtLH(D3DXMATRIX* , D3DXVECTOR3* , D3DXVECTOR3* , D3DXVECTOR3* )
at SlimDX.Matrix.LookAtLH(Vector3 eye, Vector3 target, Vector3 up)

The windows updates were uninstalled but it didn't fix the problem. SlimDx runtime for x86 and x64 were both removed and reinstalled. It didn't fix anything.

Newest GPU drivers were also updated for AMD FireGL V7900.

I think you are going to propose reinstalling Windows, but we certainly want to avoid that!

Any clue, anybody? I'm clueless :-(
Advertisement
Looks like it can't find d3dx on your machine. Did the update remove those DLLs from the end machine maybe?
Mike Popoloski | Journal | SlimDX
Hi Mike,

thanks for the tip. I already asked for d3*.dll listing from windows folder and it's subfolders... customer hasn't yet replied.

I believe it's D3DX9_43.dll, dated May 26, 2010 is the correct one that is compatible with SlimDX January 2012?
Hi Mike,

I just got the listing from the user. M$ seems to have updated d3dx9_43.dll, it's dated 30th November 2012! A week ago. I assume it is not anymore compatible with SlimDX January 2012?
I'm sure we'll get a lot angry users soon... when they update their windows.

Do you have any suggestions, Mike?
Received all D3D*.DLLs from customer's PC, from both c:\windows\System32 and c:\windows\SysWOW64 folders today.

System32-folder is the place where 64-bit DirectX DLLs exist in 64-bit machine. But that's not the case regarding D3DX9_43.DLL in this specific system. By using Visual Studio's command prompt,
dumpbin /headers c:\windows\System32\d3dx9_43.dll it revealed it is 32-bit (x86 in file file header section). All other D3D DLLs are 64-bit (x64). Found also a file named "D3DX9_43.old", which in fact is the correct 64-bit DLL.

It is still a big mystery which software has explicitly tried to update the DLL into wrong folder, and also time stamped it to 30th November 2012.
This is wrong - every machine I've ever seen does not update D3DX DLLs in this manner, and the latest version of d3dx9_43.dll I've seen is 26/05/2010 - fairly consistent with the last DX SDK. This would be expected as historically D3DX was updated with a new SDK release.

It's more likely that this is absolutely nothing to do with Microsoft and everything to do with the end-user randomly downloading and copy/pasting DLLs around, and thereby creating a mess.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

mhagain, that's wrong, yes. No software should mess up with the DirectX DLLs directly. Our software certainly doesn't. I'm just telling that some (yet unidentified) software is messing up the DLL. And that causes our software to not work.

This topic is closed to new replies.

Advertisement