ATI DX Driver Debug Symbols?

Discussion created by jacobgalloway on Jun 24, 2010
Latest reply on Feb 18, 2011 by Checkmate
Crash in ATI DirectX dll, probably caused by me, but need symbols to determine why.

We have a 64-bit multithreaded 3D Graphics rendering application, built using DirectX 10.1 that occaisionaly has been crashing in recent builds. We suspect that it is a problem caused by something we are doing, but the crash is occurring in the atidxx64.dll (ATI DirectX driver dll?)

The machine has the ATI Catalyst 10.1 version installed on it, running the 64 bit version of Windows 7. The graphics card is a ATI 4870 I think. We have not been able to reproduce the problem often, but our software can create crash dump files when it does crash, so we can view the crash dump in Visual Studio, and WinDbg. The crash does not happen often enough to know consistently what is causing it. It seems random.

The crash appears to be occurring in a thread spawned by the ati dx driver itself, during the midddle of the Present() call in our main thread.

Is it possible to get the debug symbols for a specific ATI driver release from somewhere?

If not, is it possible, that I can send this to someone at ATI to examine the crash dump and tell me whether it is our fault or not, and what we did?

Here is the information that Visual Studio 2008 produces about the crash:

Unhandled exception at 0x731ada19 in GPDSGP8_2010_06_21_11_42_41_0000.dmp: 0xC0000005: Access violation reading location 0x0000000000000038.

The crash was here:

> atidxx64.dll!00000000731ada19()  
  [Frames below may be incorrect and/or missing, no symbols loaded for atidxx64.dll] 
  kernel32.dll!BaseThreadInitThunk()  + 0xd bytes 
  ntdll.dll!RtlUserThreadStart()  + 0x21 bytes 

This is where the main thread was, according to Visual Studio:

  KERNELBASE.dll!WaitForSingleObjectEx()  + 0x9c bytes 
  [Frames below may be incorrect and/or missing, no symbols loaded for atidxx64.dll] 
> atidxx64.dll!0000000072fa54a6()  
  dxgi.dll!CD3D10Device::Present()  + 0xec bytes 
  dxgi.dll!CDXGISwapChainBase::PresentImpl()  + 0xba9 bytes 
  dxgi.dll!CDXGISwapChainBase::Present()  + 0x9 bytes 
  DsGP.exe!CSwapChain::Present(unsigned int unHostFrame=0, bool bWindowed=false, bool bWriteFrameStamp=false)  Line 499 C++
  DsGP.exe!CRenderer::Render(__int64 llFrame=-1, __int64 llClockStartFrame=6655196054)  Line 629 C++
  DsGP.exe!CGPApp::Process()  Line 763 C++
  DsGP.exe!CWndManager::Create(char * lpCmdLine=0x0000000000000000)  Line 352 C++
  DsGP.exe!WinMain(HINSTANCE__ * hInstance=0x0000000000000000, HINSTANCE__ * hPrevInstance=0x0000000000000000, char * lpCmdLine=0x0000000000000000, int nCmdShow=2698838)  Line 79 + 0x14 bytes C++
  DsGP.exe!__tmainCRTStartup()  Line 578 + 0x25 bytes C
  kernel32.dll!BaseThreadInitThunk()  + 0xd bytes 
  ntdll.dll!RtlUserThreadStart()  + 0x21 bytes 

Using WinDbg, I found that the call stack gave a little more information, but I suspect that it is incorrect because I am missing symbols.

 # Child-SP          RetAddr           Call Site

00 00000000`02d7fe70 00000000`72f9b2dd atidxx64!XdxInitXopServices+0x21be89

01 00000000`02d7fea0 00000000`72fc04af atidxx64!XdxInitXopServices+0x974d

02 00000000`02d7fed0 00000000`731fff53 atidxx64!XdxInitXopServices+0x2e91f

03 00000000`02d7ff00 00000000`731fffff atidxx64!AmdDxExtCreate+0x1813

04 00000000`02d7ff30 00000000`76c2f56d atidxx64!AmdDxExtCreate+0x18bf

05 00000000`02d7ff60 00000000`76d63281 kernel32!BaseThreadInitThunk+0xd

06 00000000`02d7ff90 00000000`00000000 ntdll!RtlUserThreadStart+0x1d


Any help would be appreciated.