locked
Is this a Graphices Debugger Bug?

    Question

  • When calling ID3D11ShaderResourceView::GetDesc

    Then run into

      VsGraphicsHelper.dll!CResourceContents11::RenderToTexture11
      VsGraphicsHelper.dll!CResourceContents11::CreateReadableTexture2DViaRendering
      VsGraphicsHelper.dll!CResourceContents11::LockFrom

    59C83292  xor         edi,edi                        //edi=0
    59C83294  mov         esi,dword ptr [eax] 
    59C83296  lea         eax,[ebp-2854h] 
    59C8329C  push        eax 
    59C8329D  mov         eax,dword ptr [edi]   //eax= dword ptr [0] ?  Access Error Here


    C++ DX11

    Saturday, July 28, 2012 3:55 PM

All replies

  • Hello,

    sorry for the late reply, we tried the above on a newer build of VS 2012 but it doesn't seem to repro but we don't hit the same exact code path when calling into ID3D11ShaderResourceView::GetDesc e.g. I don't hit RenderToTexture11 or LockFrom.  To make sure, is there a sample you can throw my way at mikewong at microsoft.com?

    much appreciated,

    mike

    Thursday, August 02, 2012 8:50 PM
    Moderator
  •   Sorry, I don't have a simple sample right now. But I can give you more info.

    I'm using Win8 RP with VS2012 RC that everyone can download.  It may be fixed in new build.

    It happened just after I pressed the "capture frame" (Print Screen) key in Graphics debug mode.

    And this is the calling stack:

    VsGraphicsHelper.dll!CResourceContents11::RenderToTexture11(struct ID3D11Texture2D *,struct ID3D11Texture2D *) Unknown
      VsGraphicsHelper.dll!CResourceContents11::CreateReadableTexture2DViaRendering(struct ID3D11Texture2D *,struct ID3D11Texture2D * *) Unknown
      VsGraphicsHelper.dll!CResourceContents11::LockFrom(struct ID3D11Resource *,struct D3D11_SUBRESOURCE_DATA * *,unsigned int *) Unknown
      VsGraphicsHelper.dll!CObjectState::ModifyCreateCall(void) Unknown
      VsGraphicsHelper.dll!CPIXCore::CreateObject10(class CHookedObjectGeneric *,class CArrayList *) Unknown
      VsGraphicsHelper.dll!CPIXCore::CreateObject10(class CHookedObjectGeneric *,class CArrayList *) Unknown
      VsGraphicsHelper.dll!CPIXCore::WriteCallPrep10(class CArrayList *,enum CID) Unknown
      VsGraphicsHelper.dll!CPIXCore::WriteCallPrep(class CCallPkg *) Unknown
      VsGraphicsHelper.dll!CPIXCore::HandlePre(class CCallPkg *) Unknown
      VsGraphicsHelper.dll!CSpyHookMgr::Pre(class CCallPkg *,enum CID) Unknown
      VsGraphicsHelper.dll!CSpyHookMgr::Pre(class CCallPkg * *,enum CID,...) Unknown
      VsGraphicsHelper.dll!CSpyHookedID3D11ShaderResourceView::GetDesc(struct D3D11_SHADER_RESOURCE_VIEW_DESC *) Unknown

    The DASM machine code is strange:

    CResourceContents11::RenderToTexture11:
    58133089  push        ebp 
    5813308A  mov         ebp,esp 

    ...

    58133278  call        CD3D11StateSaver::SaveOM (5813F3FCh) 
    5813327D  mov         eax,dword ptr [ebp-2848h] 
    58133283  push        eax 
    58133284  mov         ecx,dword ptr [eax] 
    58133286  call        dword ptr [ecx+94h] 
    5813328C  mov         eax,dword ptr [ebp-2848h] 
    58133292  xor         edi,edi                          //edi=0
    58133294  mov         esi,dword ptr [eax] 
    58133296  lea         eax,[ebp-2854h] 
    5813329C  push        eax 
    5813329D  mov         eax,dword ptr [edi]    // ERROR

    So, you can just check the source code after SaveOM in RenderToTexture11.


    C++ DX11

    Friday, August 03, 2012 9:08 AM