Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Igall_N_
Beginner
205 Views

D3D11 objects leak in the the MediaSDK samples

Hello,

 

I am testing the decode_sample and I noticed that the sample leaks D3D11 object. if enabling debug on D3D11 Device by using the D3D11_CREATE_DEVICE_DEBUG flag, on application exit the refCount on few objects is not 0:

D3D11 WARNING: Live Producer at 0x00F201B4, Refcount: 1850. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F47058, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F29FF8, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F16B4C, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F2FF74, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F78184, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F78454, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F78C6C, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F807BC, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F812F4, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F81E2C, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F82964, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F8349C, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F83FD4, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F84B0C, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F859FC, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F860E4, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00F867CC, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00FBFB10, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00FC3B6C, Refcount: 924. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x00FC4644, Refcount: 924. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x0785811C, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x078582EC, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x07859C34, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x07859E04, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x07828204, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x078283D4, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x08176924, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x08177AFC, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x08177FDC, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D11 WARNING: 	Live Object at 0x0817875C, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]

 

if you use the ID3D11Debug and call ReportLiveDeviceObjects, you can get more details:

 

D3D11 WARNING: Live ID3D11Device at 0x00F2013C, Refcount: 1851 [ STATE_CREATION WARNING #441: LIVE_DEVICE]
D3D11 WARNING: 	Live ID3D11Context at 0x00F47058, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #2097226: LIVE_CONTEXT]
D3D11 WARNING: 	Live ID3DDeviceContextState at 0x00F29FF8, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #3145742: LIVE_DEVICECONTEXTSTATE]
D3D11 WARNING: 	Live ID3D11BlendState at 0x00F16B4C, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #435: LIVE_BLENDSTATE]
D3D11 WARNING: 	Live ID3D11DepthStencilState at 0x00F2FF74, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #436: LIVE_DEPTHSTENCILSTATE]
D3D11 WARNING: 	Live ID3D11RasterizerState at 0x00F78184, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #437: LIVE_RASTERIZERSTATE]
D3D11 WARNING: 	Live ID3D11Sampler at 0x00F78454, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #434: LIVE_SAMPLER]
D3D11 WARNING: 	Live ID3D11Query at 0x00F78C6C, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #438: LIVE_QUERY]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F807BC, Refcount: 0, IntRef: 2 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F812F4, Refcount: 0, IntRef: 146 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F81E2C, Refcount: 0, IntRef: 152 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F82964, Refcount: 0, IntRef: 153 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F8349C, Refcount: 0, IntRef: 51 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F83FD4, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F84B0C, Refcount: 0, IntRef: 145 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F859FC, Refcount: 0, IntRef: 1 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F860E4, Refcount: 0, IntRef: 133 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00F867CC, Refcount: 0, IntRef: 140 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live IDXGISwapChain at 0x00FBFB10, Refcount: 1 [ STATE_CREATION WARNING #442: LIVE_SWAPCHAIN]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00FC3B6C, Refcount: 924, IntRef: 924 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11Texture2D at 0x00FC4644, Refcount: 924, IntRef: 924 [ STATE_CREATION WARNING #425: LIVE_TEXTURE2D]
D3D11 WARNING: 	Live ID3D11VideoProcessorOutputView at 0x0785811C, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145741: LIVE_PROCESSOROUTPUTVIEW]
D3D11 WARNING: 	Live ID3D11VideoProcessorInputView at 0x078582EC, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145740: LIVE_PROCESSORINPUTVIEW]
D3D11 WARNING: 	Live ID3D11VideoProcessorOutputView at 0x07859C34, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145741: LIVE_PROCESSOROUTPUTVIEW]
D3D11 WARNING: 	Live ID3D11VideoProcessorInputView at 0x07859E04, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145740: LIVE_PROCESSORINPUTVIEW]
D3D11 WARNING: 	Live ID3D11VideoProcessorOutputView at 0x07828204, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145741: LIVE_PROCESSOROUTPUTVIEW]
D3D11 WARNING: 	Live ID3D11VideoProcessorInputView at 0x078283D4, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145740: LIVE_PROCESSORINPUTVIEW]
D3D11 WARNING: 	Live ID3D11VideoProcessorOutputView at 0x08176924, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145741: LIVE_PROCESSOROUTPUTVIEW]
D3D11 WARNING: 	Live ID3D11VideoProcessorInputView at 0x08177AFC, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145740: LIVE_PROCESSORINPUTVIEW]
D3D11 WARNING: 	Live ID3D11VideoProcessorOutputView at 0x08177FDC, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #3145741: LIVE_PROCESSOROUTPUTVIEW]

please note that before calling "ReportLiveDeviceObjects" I've set all CComPtr/CComQIPtr class memebers to nullptr.

here is the system analyzer:

Intel(R) Media Server Studio 2016 R2 - System Analyzer (32-bit)


The following versions of Media SDK API are supported by platform/driver
[opportunistic detection of MSDK API > 1.19]:

        Version Target  Supported       Dec     Enc
        1.0     HW      Yes             X       X
        1.0     SW      Yes             X       X
        1.1     HW      Yes             X       X
        1.1     SW      Yes             X       X
        1.2     HW      Yes             X       X
        1.2     SW      Yes             X       X
        1.3     HW      Yes             X       X
        1.3     SW      Yes             X       X
        1.4     HW      Yes             X       X
        1.4     SW      Yes             X       X
        1.5     HW      Yes             X       X
        1.5     SW      Yes             X       X
        1.6     HW      Yes             X       X
        1.6     SW      Yes             X       X
        1.7     HW      Yes             X       X
        1.7     SW      Yes             X       X
        1.8     HW      Yes             X       X
        1.8     SW      Yes             X       X
        1.9     HW      Yes             X       X
        1.9     SW      Yes             X       X
        1.10    HW      Yes             X       X
        1.10    SW      Yes             X       X
        1.11    HW      Yes             X       X
        1.11    SW      Yes             X       X
        1.12    HW      Yes             X       X
        1.12    SW      Yes             X       X
        1.13    HW      Yes             X       X
        1.13    SW      Yes             X       X
        1.14    HW      Yes             X       X
        1.14    SW      Yes             X       X
        1.15    HW      Yes             X       X
        1.15    SW      Yes             X       X
        1.16    HW      Yes             X       X
        1.16    SW      Yes             X       X
        1.17    HW      Yes             X       X
        1.17    SW      Yes             X       X
        1.18    HW      Yes             X       X
        1.18    SW      Yes             X       X
        1.19    HW      Yes             X       X
        1.19    SW      Yes             X       X

Graphics Devices:
        Name                                         Version             State
        NVIDIA GeForce 940MX                         10.18.13.6871       Active
        Intel(R) HD Graphics 530                     20.19.15.4483       Active

System info:
        CPU:    Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
        OS:     Microsoft Windows 10 Enterprise
        Arch:   64-bit

Installed Media SDK packages (be patient...processing takes some time):
        Intel(R) Media SDK 2016 R2

Installed Media SDK DirectShow filters:

Installed Intel Media Foundation Transforms:
        Intel(R) Hardware M-JPEG Decoder MFT : {00C69F81-0524-48C0-A353-4DD9D54F9A6E}
        Intel(R) Hardware VP8 Sync Decoder MFT : {451E3CB7-2622-4BA5-8E1D-44B3C41D0924}
        Intel(R) Hardware VP8 Decoder MFT : {6D856398-834E-4A89-8EE5-071BB3F58BE4}
        Intel(R) Quick Sync Video H.264 Encoder MFT : {4BE8D3C0-0515-4A37-AD55-E4BAE19AF471}
        Intel(R) Hardware H265 Encoder MFT : {BC10864D-2B34-408F-912A-102B1B867B6C}

 

 

0 Kudos
1 Reply
Igall_N_
Beginner
205 Views

I found the leak in the sample_common project used in decode_sample and other projects as well.

 

in D3D11_device.cpp, RenderFrame method, there are 6 CComPtr class membersthat are passed to D3D11 functions with the row pointer, so the old object in the CComPtr is not cleared, the objects are:

 

m_pDXGIBackBuffer

m_pOutputView

m_pInputViewLeft

m_pTempTexture

m_pInputViewLeft

m_pInputViewRight

so the fix is to set those to nullptr before changing the row pointer.

I also suggest to add this in the distructor of the class:

m_pD3D11Ctx->ClearState();

m_pD3D11Ctx->Flush();

 

 

Reply