Hi.
I have an app that uses concurrency::task_group class to execute periodic tasks every few seconds.
I noticed that Private Bytes performance counter of my app is increasing over time.
After inspecting my app using LeakDiag tool I got the following call stack for the leaked memory:
<STACK numallocs="013716" size="0120" totalsize="01645920">
<STACKSTATS>
<SIZESTAT size="0120" numallocs="013716"/>
<HEAPSTAT handle="830000" numallocs="013716"/>
</STACKSTATS>
<FRAME num="0" dll="MSVCR100.dll" function ="malloc" offset="0x4B" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.c" line="89" addr="0x73540269" />
<FRAME num="1" dll="MSVCR100.dll" function ="operator new" offset="0x1F" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\new.cpp" line="59" addr="0x7354233B" />
<FRAME num="2" dll="MSVCR100.dll" function ="Concurrency__details___TaskCollection___Alias" offset="0x55" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\taskcollection.cpp" line="846" addr="0x73585486" />
<FRAME num="3" dll="MSVCR100.dll" function ="Concurrency__details___TaskCollection___Schedule" offset="0x36" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\taskcollection.cpp" line="1009" addr="0x7358563F" />
<FRAME num="4" dll="gvipcserver.dll" function ="GVSI__Actor__Enqueue" offset="0xA0" filename="c:\users\draganm\gvsi\tfs_release2\server\streamingserver\src\gvipcserver\actor.cpp" line="25" addr="0x4156D0" />
<FRAME num="5" dll="gvipcserver.dll" function ="GVSI__SessionController__RemoteSessionsReceived" offset="0x9A" filename="c:\users\draganm\gvsi\tfs_release2\server\streamingserver\src\gvipcserver\sessioncontroller.cpp" line="250" addr="0x471D9A" />
<FRAME num="6" dll="gvipcserver.dll" function ="std__tr1___Impl_no_alloc0<std__tr1___Callable_obj<GVSI__`anonymous namespace'__<lambda0>,0>,void>___Do_call" offset="0x28" filename="c:\program files (x86)\microsoft
visual studio 10.0\vc\include\xxfunction" line="66" addr="0x44B348" />
<FRAME num="7" dll="MSVCR100.dll" function ="Concurrency__details___UnrealizedChore___UnstructuredChoreWrapper" offset="0xF4" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\chores.cpp" line="204" addr="0x73575EC8" />
<FRAME num="8" dll="MSVCR100.dll" function ="Concurrency__details__InternalContextBase__ExecuteChoreInline" offset="0x50" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\internalcontextbase.cpp" line="1384" addr="0x73579D41" />
<FRAME num="9" dll="MSVCR100.dll" function ="Concurrency__details__FreeThreadProxy__Dispatch" offset="0x48" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\freethreadproxy.cpp" line="161" addr="0x73579291" />
<FRAME num="10" dll="MSVCR100.dll" function ="Concurrency__details__ThreadProxy__ThreadProxyMain" offset="0x22" filename="f:\dd\vctools\crt_bld\self_x86\crt\src\threadproxy.cpp" line="164" addr="0x7358671E" />
<FRAME num="11" dll="kernel32.dll" function ="BaseThreadInitThunk" offset="0x12" filename="" line="" addr="0x75B8339A" />
<FRAME num="12" dll="ntdll.dll" function ="RtlInitializeExceptionChain" offset="0x63" filename="" line="" addr="0x77C99EF2" />
<FRAME num="13" dll="ntdll.dll" function ="RtlInitializeExceptionChain" offset="0x36" filename="" line="" addr="0x77C99EC5" />
<STACKID>1F36D708</STACKID>
</STACK>
It seems that Concurrency::details::TaskCollection::Alias function allocates leaked memory.
Does anyone know why is this happening and how to solve this problem.
Regards,
Dragan