If you have a WPF based application which leaks memory with following symptoms, the fix is available now. This fix as on 31/ 3/ 2010 is the latest. This is fixing for about 5 different unrelated and extremely rare intermittent memory leaks in WPF. I will release the KB soon. I filled fix only for.net 3.5 SP1 and some of the issues are there in 4.0 as well. I will add the build numbers and KB number once it is public. If you happen to be running to this issue feel free to contact me via support.microsoft.com.

Memory is used in VAD and not native heap.

 

0:004> !address -summary

 

-------------------- Usage SUMMARY --------------------------

    TotSize (      KB)   Pct(Tots) Pct(Busy)   Usage

   2d087000 (  737820) : 00.01%    73.08%    : RegionUsageIsVAD

   7ffc25f6000 (8588924888) : 99.99%    00.00%    : RegionUsageFree

    7c56000 (  127320) : 00.00%    12.61%    : RegionUsageImage

     810000 (    8256) : 00.00%    00.82%    : RegionUsageStack

      12000 (      72) : 00.00%    00.01%    : RegionUsageTeb

    84f6000 (  136152) : 00.00%    13.49%    : RegionUsageHeap

          0 (       0) : 00.00%    00.00%    : RegionUsagePageHeap

       1000 (       4) : 00.00%    00.00%    : RegionUsagePeb

       2000 (       8) : 00.00%    00.00%    : RegionUsageProcessParametrs

       2000 (       8) : 00.00%    00.00%    : RegionUsageEnvironmentBlock

       Tot: 7ffffff0000 (8589934528 KB) Busy: 000000003d9fa000 (1009640 KB)

 

-------------------- Type SUMMARY --------------------------

    TotSize (      KB)   Pct(Tots)  Usage

   7ffc25f6000 (8588924888) : 99.99%   : <free>

    7c56000 (  127320) : 00.00%   : MEM_IMAGE

    1efc000 (   31728) : 00.00%   : MEM_MAPPED

   33ea8000 (  850592) : 00.01%   : MEM_PRIVATE

 

-------------------- State SUMMARY --------------------------

    TotSize (      KB)   Pct(Tots)  Usage

   16873000 (  369100) : 00.00%   : MEM_COMMIT

   7ffc25f6000 (8588924888) : 99.99%   : MEM_FREE

   27187000 (  640540) : 00.01%   : MEM_RESERVE

 

Largest free region: Base 000000007fff0000 - Size 00000641a8bf0000 (6717845440 KB)

 

 

System.WeakReference and System.Windows.Dependent[] seems very high.

 

0:004> !dumpheap -stat

total 191433 objects

Statistics:

              MT    Count    TotalSize Class Name

00000642801c8cf0        1           24 System.Collections.Generic.ObjectEqualityComparer`1[[System.Windows.DependencyObject, WindowsBase]]

00000642801c8890        1           24 System.Collections.Generic.ObjectEqualityComparer`1[[System.Windows.Threading.DispatcherTimer, WindowsBase]]

00000642801c7be8        1           24 System.Collections.Generic.GenericArraySortHelper`1[[MS.Internal.Shaping.OpenTypeLayoutCache+GlyphLookupRecord, PresentationCore]]

00000642801c70f8        1           24 System.Collections.Generic.ArraySortHelper`1[[MS.Internal.FontCache.FamilyCollection+PhysicalFace, PresentationCore]]

00000642801c7028        1           24 System.Collections.Generic.ObjectComparer`1[[MS.Internal.FontCache.FamilyCollection+PhysicalFace, PresentationCore]]

.

.

.

.

 

000006422b92a360      127        26416 System.Windows.Data.BindingExpression

000006427842dfb0      413        26432 System.EventHandler

000006422b8f0fb0      299        26760 System.Windows.ChildValueLookup[]

0000064278438880      692        27680 System.RuntimeType

000006422b8d5f78      573        32088 System.Windows.FrameworkPropertyMetadata

000006427843def8      380        33440 System.Collections.Hashtable

00000642801c11c8      860        34400 MemoryLeakTest.Entry

000006422f2e70d0      478        42064 System.Windows.DependencyProperty

000006427843e5e0      200        51200 System.Byte[]

000006427843d6c0      291        77656 System.Int32[]

000006422f2d2388      593       105032 System.Windows.EffectiveValueEntry[]

000006427843e0c0      382       237888 System.Collections.Hashtable+bucket[]

0000064278424390     1965       253016 System.Object[]

00000642784365a0     4711       313408 System.String

000006427842dab8   159901      5116832 System.WeakReference

0000000000174cd0       58     54677432      Free

000006422f2cdc90        2     66066888 System.Windows.Dependent[]

Total 191433 objects

Fragmented blocks larger than 0.5 MB:

            Addr     Size      Followed by

0000000024d81000    1.8MB 0000000024f44cd8 System.Windows.EventRoute

 

 

0:004> !dumpheap -type System.Windows.Dependent[]

         Address               MT     Size

0000000011fc8598 000006422f2cdc90   310584    

00000000151e4ef8 000006422f2cdc90 65756304    

total 2 objects

Statistics:

              MT    Count    TotalSize Class Name

000006422f2cdc90        2     66066888 System.Windows.Dependent[]

Total 2 objects

 

System.Windows.EffectiveValueEntry[] also has some role in the leak which is holding on to System.Windows.Dependent[])

 

0:004> !gcroot 00000000151e4ef8

Note: Roots found on stacks may be false positives. Run "!help gcroot" for

more info.

Scan Thread 0 OSTHread 5df4

RSP:12edd0:Root:0000000001f4c510(System.Windows.Threading.Dispatcher)->

0000000001f75048(System.Windows.Input.InputManager)->

0000000001f75d20(System.Windows.Input.StylusLogic)->

0000000001f75f18(System.Collections.Generic.Dictionary`2[[System.Object, mscorlib],[System.Windows.Input.PenContexts, PresentationCore]])->

0000000001f75f98(System.Collections.Generic.Dictionary`2+Entry[[System.Object, mscorlib],[System.Windows.Input.PenContexts, PresentationCore]][])->

0000000002042838(System.Windows.Interop.HwndSource)->

0000000001f73d78(MemoryLeakTest.Window1)->

0000000001fcea58(System.Windows.Controls.Label)->

0000000001fcaa88(System.Windows.Controls.Grid)->

0000000001fc9e88(System.Windows.Controls.Grid)->

0000000001f83d50(System.Windows.Controls.DockPanel)->

0000000001f832e8(System.Windows.Controls.DockPanel)->

0000000001f83d00(System.Windows.Controls.UIElementCollection)->

0000000001f83d28(System.Windows.Media.VisualCollection)->

0000000001fd1bf0(System.Object[])->

0000000001fcec70(System.Windows.Controls.ListBox)->

0000000001fdef00(System.Windows.EffectiveValueEntry[])->

00000000026200a0(MS.Utility.FrugalMap)->

0000000002081ca0(MS.Utility.ArrayObjectMap)->

0000000002081cc0(MS.Utility.FrugalMapBase+Entry[])->

0000000002081c88(System.Windows.DependentList)->

0000000002081d88(MS.Utility.ArrayItemList`1[[System.Windows.Dependent, WindowsBase]])->

00000000151e4ef8(System.Windows.Dependent[])

Scan Thread 2 OSTHread 575c

Scan Thread 3 OSTHread 6a5c

Scan Thread 5 OSTHread 7d18

 

Also another unrelated issue.

 

 

0:000> !dumpheap -stat

total 26378376 objects

Statistics:

      MT    Count    TotalSize Class Name

7a5ec668        1           12 System.ComponentModel.TypeConverterAttribute

7a5ec5f0        1           12 System.ComponentModel.TypeConverter

7a5ec0d8        1           12 System.ComponentModel.WeakHashtable+WeakKeyComparer

7a5eb880        1           12 System.ComponentModel.DoubleConverter

7a5eb6fc        1           12 System.ComponentModel.Int32Converter

7a5ea2a0        1           12 System.ComponentModel.StringConverter

7a5e93cc        1           12 System.Net.Cache.RequestCachePolicy

7a5e8ab0        1           12 System.Diagnostics.TraceOptions

7a5e28b4        1           12 System.Collections.Specialized.StringDictionary

7a5d61ac        1           12 System.Net.CaseInsensitiveAscii

7a5d5f10        1           12 System.Net.FileWebRequestCreator

79333ed4        1           12 System.Text.DecoderExceptionFallback

79333e90        1           12 System.Text.EncoderExceptionFallback

79331ea4        1           12 System.RuntimeTypeHandle

793316e0        1           12 System.Char

 

.

.

.

 

79332a30    35810       859440 System.Collections.ArrayList

57a0a0e0    54208       867328 System.Windows.WeakEventManager+ListenerList

57a13090    37451       898824 MS.Utility.SingleItemList`1[[System.Windows.Dependent, WindowsBase]]

55ce35ac    46274       925480 System.Windows.InstanceValueKey

55cda004     2947       943040 System.Windows.Controls.ScrollViewer

55ce975c    61024       976384 MS.Internal.Data.WeakDependencySource

55ce3290     8866      1028040 System.Windows.ContainerDependent[]

55ce90a4    35568      1138176 System.Windows.TemplateNameScope

79324338    23579      1226108 System.Collections.Generic.Dictionary`2[[System.Object, mscorlib],[System.Object, mscorlib]]

79330a00    16634      1259588 System.String

7a5ecac4    65189      1303780 System.Collections.Specialized.HybridDictionary

79324510    23575      1414500 System.Collections.Generic.Dictionary`2+Entry[[System.Object, mscorlib],[System.Object, mscorlib]][]

54f5e164    39598      1425528 MS.Utility.ThreeItemList`1[[System.Double, mscorlib]]

55cd6fa4     5897      1462456 System.Windows.Controls.Label

548178f0    16646      1464848 System.Windows.Media.GlyphRun

55cbabf4     5897      1533220 System.Windows.Controls.DockPanel

55ce7340     8855      1700220 System.Windows.PropertyValue[]

55cd1ca8     6939      1720872 System.Windows.Controls.Button

54833b6c    43199      1727960 System.Windows.Media.DoubleCollection

55ccaecc     5893      1744328 System.Windows.Controls.Primitives.ScrollBar

55cd7b4c     6959      1753668 System.Windows.Controls.ListBoxItem

57a0a12c    88932      1778640 MS.Internal.WeakEventTable+EventKey

55cc5b50     9057      1822812 MS.Utility.ItemStructMap`1+Entry[[MS.Utility.ItemStructList`1[[System.Windows.ChildValueLookup, PresentationFramework]], WindowsBase]][]

57a0fb58    77023      1848552 System.Windows.ModifiedValue

55cd7550     5896      1863136 System.Windows.Controls.ListBox

7a5ecb80    68070      1905960 System.Collections.Specialized.ListDictionary

55ce94ec    61025      1952840 MS.Internal.Data.PropertyPathWorker+SourceValueState[]

55cc8cf4    23621      2173132 System.Windows.Data.Binding

54838114    36453      2187180 System.Windows.Media.RenderData

55ce9410    61024      2196864 MS.Internal.Data.ClrBindingWorker

7a5ecc40   110449      2208980 System.Collections.Specialized.ListDictionary+DictionaryNode

55ce4ba0     9910      2695520 System.Windows.Controls.Grid

79333470    36510      2790280 System.Byte[]

79333150    13684      2800200 System.Collections.Hashtable+bucket[]

55ce9490    61025      2929200 MS.Internal.Data.PropertyPathWorker

579eff24    94488      3023616 System.Collections.Specialized.NotifyCollectionChangedEventHandler

55cb86e4    12853      3187544 System.Windows.Controls.Border

79329c6c   121018      3872576 System.EventHandler

55cc4e2c    16835      4175080 System.Windows.Controls.ContentPresenter

55cc5d2c   115754      5093528 System.Windows.ChildValueLookup[]

55cc79f4    15794      5433136 System.Windows.Controls.TextBlock

55ce35f8    61024      6590592 System.Windows.Data.BindingExpression

57a0165c   141842     18767256 System.Windows.EffectiveValueEntry[]

793041d0   378285    143217732 System.Object[]

7932a1b0 11702281    187236496 System.WeakReference

55cfed28 11193761    268650264 System.Windows.DeferredAppResourceReference

579fe0c4     2181    417178832 MS.Internal.WeakEventTable+EventKey[]