精华内容
下载资源
问答
  • DSO138数字示波器电子套件免费申请赠送活动由电路城和泰克联合举办,有兴趣的亲抓紧来申请啦!同时也希望大家能在电路城分享自己的原创项目作品或电子资料,供更多的电子爱好者学习和参考! 美国泰克Tek公司,作为...
  • 3.从中发现先申请写锁, 后申请读锁,导致UI死锁 第一个锁CollectionChangedEventManager.DeliverEvent读锁 第二个锁PropertyChangedEventManager.PrivateAddListener写锁 0000000021137b28 000007fef87010b4 ...
    
    准备工作
    1.对失去响应进程创建转储文件
    2.配置该进程的pdb文件
    3.复制该进程所在机器的系统dll(sos.dll, clr.dll, mscordacwks.dll)
    4.配置系统dll的pdb文件路径, 或者直接从msdl.microsoft/download/symbols下载(注意端口是否被封)


    分析过程:
    1.利用~*e !clrstack
    得到UI线程的ID 为 12
    2.利用~ 12e !clrstack -p
    得到堆栈信息及函数参数值
    3.从中发现先申请写锁, 后申请读锁,导致UI死锁
    第一个锁CollectionChangedEventManager.DeliverEvent读锁
    第二个锁PropertyChangedEventManager.PrivateAddListener写锁

    0000000021137b28 000007fef87010b4 [HelperMethodFrame_1OBJ: 0000000021137b28] System.Threading.ReaderWriterLock. AcquireReaderLockInternal(Int32)
    0000000021137c50 000007fef3eee179 System.Windows.WeakEventManager.DeliverEvent(System.Object, System.EventArgs)
        PARAMETERS:
            this (0x0000000021137ce0) = 0x0000000002f45678
            sender (0x0000000021137ce8) = 0x00000000039ac078
            args (0x0000000021137cf0) = 0x00000000044a2828

    .....................省略部分日志信息

    000000002113cf78 000007fef879cae7 [HelperMethodFrame_1OBJ: 000000002113cf78] System.Threading.ReaderWriterLock. AcquireWriterLockInternal(Int32)
    000000002113d0a0 000007fef3eedf0a System.ComponentModel.PropertyChangedEventManager.PrivateAddListener(System.ComponentModel.INotifyPropertyChanged, System.Windows.IWeakEventListener, System.String)
        PARAMETERS:
            this = <no data>
            source = <no data>
            listener = <no data>
            propertyName = <no data>

    000000002113d120 000007fee7ce8e76 MS.Internal.Data.PropertyPathWorker.ReplaceItem(Int32, System.Object, System.Object)
        PARAMETERS:
            this = <no data>
            k = <no data>
            newO = <no data>
            parent = <no data>

    4. 利用!do分析读锁中DeliverEvent传递的参数args (0x0000000021137cf0) = 0x00000000044a2828
    0:000> !do 0x00000000044a2828
    Name:        System.Collections.Specialized.NotifyCollectionChangedEventArgs
    MethodTable: 000007fef6b5ffb8
    EEClass:     000007fef6853e90
    Size:        48(0x30) bytes
    File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fef7840c78  40001c7       80     System.EventArgs  0   shared           static Empty
                                     >> Domain:Value  00000000007f85a0:0000000002f2a5c8 <<
    000007fef6b5cad0  4000674       18         System.Int32  1 instance                 4 _action
    000007fef782f780  4000675        8 ...Collections.IList  0 instance 0000000000000000 _newItems
    000007fef782f780  4000676       10 ...Collections.IList  0 instance 0000000000000000 _oldItems
    000007fef782c858  4000677       1c         System.Int32  1 instance               -1 _newStartingIndex
    000007fef782c858  4000678       20         System.Int32  1 instance               -1 _oldStartingIndex

    5.根据成员_action 为4 查MSDN可知,当时的操作位Rest
    public   enum   NotifyCollectionChangedAction
      {
        [__DynamicallyInvokable] Add,
        [__DynamicallyInvokable] Remove,
        [__DynamicallyInvokable] Replace,
        [__DynamicallyInvokable] Move,
        [__DynamicallyInvokable] Reset,
      }

    6.通过~ 12e !dso 
    得到对象名的堆栈信息
    0:000> ~12e !dso
    OS Thread Id: 0x198 (12)
    RSP/REG          Object           Name
    rcx              0000000004045578 System.Windows.Media.RenderData
    00000000211370A0 00000000044a2858 System.IntPtr[]
    0000000021137140 00000000044a2858 System.IntPtr[]
    00000000211371B0 00000000044a2858 System.IntPtr[]
    00000000211371F0 00000000044a2858 System.IntPtr[]
    0000000021137270 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    0000000021137278 00000000044a2858 System.IntPtr[]
    00000000211373E8 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    00000000211373F0 00000000044a2858 System.IntPtr[]
    00000000211375E0 00000000044a2858 System.IntPtr[]
    0000000021137720 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    0000000021137728 00000000044a2858 System.IntPtr[]
    00000000211377C8 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    0000000021137AB0 0000000002f29fd0 MS.Internal.ReaderWriterLockWrapper
    0000000021137AD8 0000000002f29ff8   System.Threading.ReaderWriterLock
    0000000021137B90 00000000039ac078 System.Windows.Controls.ItemCollection
    0000000021137B98 0000000002f45678 System.Collections.Specialized.CollectionChangedEventManager
    0000000021137BA0 0000000002f29fd0 MS.Internal.ReaderWriterLockWrapper
    0000000021137BB8 00000000037af1f0 System.Object[]    (System.String[])
    0000000021137C38 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021137C40 00000000037af1f0 System.Object[]    (System.String[])
    0000000021137C50 0000000002f45678 System.Collections.Specialized.CollectionChangedEventManager
    0000000021137C60 00000000039ac078 System.Windows.Controls.ItemCollection
    0000000021137CE0 0000000002f45678 System.Collections.Specialized.CollectionChangedEventManager
    0000000021137CE8 00000000039ac078 System.Windows.Controls.ItemCollection
    0000000021137CF0 00000000044a2828 System.Collections.Specialized.NotifyCollectionChangedEventArgs
    0000000021137D28 00000000039ac078 System.Windows.Controls.ItemCollection
    0000000021137D50 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021137D58 00000000039ac078 System.Windows.Controls.ItemCollection
    0000000021137D60 00000000044a2828 System.Collections.Specialized.NotifyCollectionChangedEventArgs
    0000000021137D78 00000000037af1f0 System.Object[]    (System.String[])
    0000000021137D80 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021137DA0 00000000039ac3d8 System.Collections.Specialized.NotifyCollectionChangedEventHandler
    0000000021137DA8 00000000039ac078 System.Windows.Controls.ItemCollection
    0000000021137DB0 00000000044a2828 System.Collections.Specialized.NotifyCollectionChangedEventArgs
    0000000021137DC0 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021137DD0 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021137DE0 0000000002dd1858 System.Boolean
    0000000021137DF0 0000000002d72000 MS.Internal.NamedObject
    0000000021137E10 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021137E28 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021137E40 0000000002faecc0 MS.Utility.ItemStructMap`1+Entry[[System.Windows.TriggerSourceRecord, PresentationFramework]][]
    0000000021137E58 0000000002faecc0 MS.Utility.ItemStructMap`1+Entry[[System.Windows.TriggerSourceRecord, PresentationFramework]][]
    0000000021137E60 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021137E68 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    0000000021137E78 00000000043f0770 System.Windows.ModifiedValue
    0000000021137ED0 0000000002dfb280 System.Windows.DependencyProperty
    0000000021137ED8 0000000002dd7e40 System.Windows.UncommonField`1[[System.Collections.Specialized.HybridDictionary[], System]]
    0000000021137F40 0000000002fadf80 MS.Utility.ItemStructMap`1+Entry[[MS.Utility.ItemStructList`1[[System.Windows.ChildValueLookup, PresentationFramework]], WindowsBase]][]
    0000000021138010 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138020 0000000002dd7e00 System.Windows.UncommonField`1[[System.Collections.Specialized.HybridDictionary[], System]]
    0000000021138060 0000000002e2fa40 System.Windows.DependencyProperty
    00000000211380A0 00000000039abcc8 System.Windows.Controls.ComboBox
    00000000211380B0 00000000039abcc8 System.Windows.Controls.ComboBox
    00000000211380C0 00000000039abcc8 System.Windows.Controls.ComboBox
    00000000211380E0 00000000039abcc8 System.Windows.Controls.ComboBox
    00000000211380F0 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138100 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138140 0000000002d72000 MS.Internal.NamedObject
    0000000021138180 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138188 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138190 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138198 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    00000000211381A8 00000000043f0770 System.Windows.ModifiedValue
    0000000021138238 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138258 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    0000000021138260 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138278 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138298 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138350 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    0000000021138360 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    0000000021138370 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138378 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    0000000021138388 00000000043f0770 System.Windows.ModifiedValue
    00000000211383C8 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    00000000211383D0 00000000039abcc8 System.Windows.Controls.ComboBox
    00000000211383E8 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138418 00000000044a2238 UIH.Mcsf.PA.UtilityCSharp.Commons.TaskSchedulerExtension.SchedulerEnumerator
    0000000021138478 0000000002dd5f80 System.Windows.UncommonField`1[[System.Object, mscorlib]]
    0000000021138490 00000000043f0770 System.Windows.ModifiedValue
    00000000211384A0 0000000002e2fa40 System.Windows.DependencyProperty
    00000000211384A8 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    00000000211384B8 00000000043f0770 System.Windows.ModifiedValue
    00000000211384D8 00000000043f0770 System.Windows.ModifiedValue
    00000000211384E8 00000000043f0770 System.Windows.ModifiedValue
    0000000021138500 000000000307d3c0 MS.Internal.NamedObject
    0000000021138530 00000000043f0770 System.Windows.ModifiedValue
    0000000021138550 0000000002d72000 MS.Internal.NamedObject
    00000000211385B0 0000000002e2fa40 System.Windows.DependencyProperty
    00000000211385B8 0000000002e2f9a8 System.Windows.FrameworkPropertyMetadata
    00000000211385C8 00000000043f0770 System.Windows.ModifiedValue
    0000000021138600 00000000043f0770 System.Windows.ModifiedValue
    0000000021138640 00000000037af1f0 System.Object[]    (System.String[])
    0000000021138680 00000000037af1f0 System.Object[]    (System.String[])
    00000000211386A8 00000000037af1f0 System.Object[]    (System.String[])
    00000000211386E0 0000000002de4e28 System.Windows.Visibility
    0000000021138708 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138710 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138780 0000000002d72000 MS.Internal.NamedObject
    0000000021138790 00000000043f0770 System.Windows.ModifiedValue
    00000000211387C0 0000000002ed5248 System.Windows.FrameworkPropertyMetadata
    00000000211387E0 0000000002e2fa40 System.Windows.DependencyProperty
    0000000021138810 00000000039ab300 System.Object[]    (System.Object[])
    0000000021138840 0000000003091df8 MS.Utility.ItemStructMap`1+Entry[[MS.Utility.ItemStructList`1[[System.Windows.ChildValueLookup, PresentationFramework]], WindowsBase]][]
    0000000021138850 0000000003091df8 MS.Utility.ItemStructMap`1+Entry[[MS.Utility.ItemStructList`1[[System.Windows.ChildValueLookup, PresentationFramework]], WindowsBase]][]
    0000000021138860 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138870 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138878 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138880 00000000043fe170 System.Int32[]
    0000000021138888 00000000039a77c8 System.Collections.Generic.List`1[[System.Windows.DependencyObject, WindowsBase]]
    00000000211388A0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211388F8 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138908 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138910 0000000002de4f88 System.Windows.DependencyProperty
    0000000021138918 00000000039ab0d0 System.Windows.Data.Binding
    0000000021138920 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138930 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138950 0000000002de4f88 System.Windows.DependencyProperty
    0000000021138958 00000000039ab0d0 System.Windows.Data.Binding
    0000000021138960 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138970 00000000039abcc8 System.Windows.Controls.ComboBox
    0000000021138980 00000000039ad328 System.Windows.Controls.Primitives.Thumb
    0000000021138988 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138998 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211389A0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211389A8 00000000039a73a8 System.Collections.Specialized.HybridDictionary
    00000000211389B0 00000000039a73a8 System.Collections.Specialized.HybridDictionary
    00000000211389B8 00000000043fe170 System.Int32[]
    00000000211389C8 0000000003089420 System.Windows.Controls.ControlTemplate
    00000000211389E0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211389F0 0000000002ed5a90 System.Windows.DependencyProperty
    00000000211389F8 00000000039a7380 System.Object[]    (System.Collections.Specialized.HybridDictionary[])
    0000000021138A00 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021138A08 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138A10 00000000039a77c8 System.Collections.Generic.List`1[[System.Windows.DependencyObject, WindowsBase]]
    0000000021138A20 00000000039a78d8 System.Windows.Controls.Grid
    0000000021138A38 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138A40 00000000039a7380 System.Object[]    (System.Collections.Specialized.HybridDictionary[])
    0000000021138A48 00000000039a77c8 System.Collections.Generic.List`1[[System.Windows.DependencyObject, WindowsBase]]
    0000000021138A50 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021138A68 00000000039a7380 System.Object[]    (System.Collections.Specialized.HybridDictionary[])
    0000000021138A78 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021138A80 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138A90 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138AC8 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138AD0 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138B00 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021138B10 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138B18 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138B20 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021138B28 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021138B30 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138B40 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138B50 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138B60 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138B68 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021138B70 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138B90 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138BE0 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021138BE8 0000000002ed59c8 System.Windows.FrameworkPropertyMetadata
    0000000021138BF8 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021138C08 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138C50 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021138C58 0000000002dd7e40 System.Windows.UncommonField`1[[System.Collections.Specialized.HybridDictionary[], System]]
    0000000021138CC0 0000000002d72000 MS.Internal.NamedObject
    0000000021138D30 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138D90 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021138DA0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138DE0 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021138E60 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138EC0 0000000002d72000 MS.Internal.NamedObject
    0000000021138EF0 0000000002ed59c8 System.Windows.FrameworkPropertyMetadata
    0000000021138F00 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138F08 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021138F10 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021138F18 0000000002ed59c8 System.Windows.FrameworkPropertyMetadata
    0000000021138F28 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021138F38 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021138FB8 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138FD8 0000000002ed59c8 System.Windows.FrameworkPropertyMetadata
    0000000021138FE0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021138FF8 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021139018 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021139060 0000000003081f00 System.Windows.DependencyProperty
    00000000211390A0 00000000038f8350 System.Windows.Controls.ControlTemplate
    00000000211390F0 0000000002ed5a90 System.Windows.DependencyProperty
    00000000211390F8 0000000002ed59c8 System.Windows.FrameworkPropertyMetadata
    0000000021139108 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139118 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021139148 0000000002ed59c8 System.Windows.FrameworkPropertyMetadata
    0000000021139150 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139168 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021139180 00000000030893b8 System.Windows.VerticalAlignment
    0000000021139198 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    00000000211391D0 000000000308b050 System.Windows.CoerceValueCallback
    0000000021139210 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139220 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021139228 0000000002ed59c8 System.Windows.FrameworkPropertyMetadata
    0000000021139238 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139248 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021139258 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139268 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139290 000000000396e9d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211392A0 00000000038f8350 System.Windows.Controls.ControlTemplate
    00000000211392B0 0000000003089420 System.Windows.Controls.ControlTemplate
    00000000211392C0 00000000038f8350 System.Windows.Controls.ControlTemplate
    00000000211392D0 0000000002d72000 MS.Internal.NamedObject
    0000000021139300 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139310 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021139320 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021139330 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021139338 0000000002ed59c8 System.Windows.FrameworkPropertyMetadata
    0000000021139348 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139358 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021139370 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021139380 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139390 00000000038f8350 System.Windows.Controls.ControlTemplate
    00000000211393A0 00000000038f8350 System.Windows.Controls.ControlTemplate
    00000000211393C0 0000000003089420 System.Windows.Controls.ControlTemplate
    00000000211393D0 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021139400 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139428 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139440 0000000002ed5a00 System.Windows.PropertyMetadata
    0000000021139478 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021139488 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139490 0000000002ed5a90 System.Windows.DependencyProperty
    0000000021139500 0000000002d72000 MS.Internal.NamedObject
    0000000021139510 0000000003089420 System.Windows.Controls.ControlTemplate
    0000000021139530 00000000038f8350 System.Windows.Controls.ControlTemplate
    0000000021139550 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139578 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211395C0 0000000002ed5a90 System.Windows.DependencyProperty
    00000000211395F0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211395F8 0000000002dd7de0 System.Windows.UncommonField`1[[System.Collections.Specialized.HybridDictionary[], System]]
    0000000021139600 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139618 0000000003089038 System.Windows.Style
    0000000021139620 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139630 0000000002dd1de0 System.Windows.DependencyProperty
    0000000021139640 00000000042efcd0 System.Windows.ModifiedValue
    0000000021139650 0000000003089038 System.Windows.Style
    0000000021139678 00000000038fab48 MS.Utility.SixItemList`1[[System.Windows.ContainerDependent, PresentationFramework]]
    00000000211396A0 0000000002ea6c68 System.Windows.DependencyProperty
    00000000211396A8 0000000003089038 System.Windows.Style
    00000000211396B0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211396B8 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211396D0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139710 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139718 0000000003089038 System.Windows.Style
    0000000021139728 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139730 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139838 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139840 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139850 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139870 000000000308b5d8 System.Windows.PropertyChangedCallback
    0000000021139878 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139888 000000000308b5d8 System.Windows.PropertyChangedCallback
    0000000021139890 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139898 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    00000000211398A8 00000000042efcd0 System.Windows.ModifiedValue
    00000000211399D0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    00000000211399E0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139A50 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139B10 000000000304ba68 System.Windows.Controls.DataGrid
    0000000021139B20 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139B50 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139B60 00000000030927b0 System.Runtime.CompilerServices.ConditionalWeakTable`2[[System.Windows.DependencyObject, WindowsBase],[System.Collections.Generic.Dictionary`2[[System.Windows.DependencyProperty, WindowsBase],[System.Boolean, mscorlib]], mscorlib]]
    0000000021139BC0 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139BC8 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139BD8 00000000042efcd0 System.Windows.ModifiedValue
    0000000021139BF8 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139C68 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139C88 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139C90 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139CA8 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139CC8 00000000039a75e8 System.Collections.Generic.Dictionary`2[[System.Windows.DependencyProperty, WindowsBase],[System.Boolean, mscorlib]]
    0000000021139CF0 00000000039ab750 MS.Utility.FrugalMap
    0000000021139D00 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139D10 0000000003081bf0 System.Windows.DependencyProperty
    0000000021139D40 0000000003081bf0 System.Windows.DependencyProperty
    0000000021139D50 0000000003047240 System.Windows.DependencyProperty
    0000000021139D80 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139D90 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139DA0 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139DA8 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139DB8 00000000042efcd0 System.Windows.ModifiedValue
    0000000021139DF8 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139E00 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    0000000021139E18 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139E30 0000000002dd8728 System.Windows.DependencyProperty
    0000000021139E80 000000000308b4b8 System.Windows.CoerceValueCallback
    0000000021139EC0 00000000042efcd0 System.Windows.ModifiedValue
    0000000021139ED0 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139ED8 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139EE8 00000000042efcd0 System.Windows.ModifiedValue
    0000000021139F08 00000000042efcd0 System.Windows.ModifiedValue
    0000000021139F18 00000000042efcd0 System.Windows.ModifiedValue
    0000000021139F48 0000000002dcd868 System.Windows.Media.Composition.DUCE+Channel
    0000000021139F60 00000000042efcd0 System.Windows.ModifiedValue
    0000000021139F80 0000000002d72000 MS.Internal.NamedObject
    0000000021139FE0 0000000002ea6c68 System.Windows.DependencyProperty
    0000000021139FE8 000000000308b4f8 System.Windows.FrameworkPropertyMetadata
    0000000021139FF8 00000000042efcd0 System.Windows.ModifiedValue
    000000002113A030 00000000042efcd0 System.Windows.ModifiedValue
    000000002113A070 0000000003089038 System.Windows.Style
    000000002113A0B0 0000000003089038 System.Windows.Style
    000000002113A0D8 0000000003089038 System.Windows.Style
    000000002113A120 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A130 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A138 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A140 0000000002ea6c68 System.Windows.DependencyProperty
    000000002113A1B0 0000000002d72000 MS.Internal.NamedObject
    000000002113A1C0 00000000042efcd0 System.Windows.ModifiedValue
    000000002113A1F0 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113A200 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A210 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A228 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A270 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A280 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A2B8 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113A348 0000000002dd86e8 System.Windows.DependencyPropertyKey
    000000002113A3F8 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A408 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A410 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A418 0000000002dcd868 System.Windows.Media.Composition.DUCE+Channel
    000000002113A430 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A438 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A440 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A450 00000000039a78d8 System.Windows.Controls.Grid
    000000002113A468 0000000002dcd868 System.Windows.Media.Composition.DUCE+Channel
    000000002113A478 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A480 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A490 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A4B8 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A4C0 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A4D0 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A4E0 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A508 00000000039a71d8 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A510 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A530 00000000038eca90 System.Windows.Media.VisualCollection
    000000002113A558 00000000038cbc28 System.Windows.Controls.ItemContainerGenerator
    000000002113A588 00000000043fdfb0 System.Object[]    (System.Windows.Media.Visual[])
    000000002113A590 00000000038eca90 System.Windows.Media.VisualCollection
    000000002113A5A0 00000000038eca68 System.Windows.Controls.UIElementCollection
    000000002113A5C0 00000000044a16b0 UIH.Mcsf.PA.UtilityCSharp.Commons.TaskSchedulerExtension.SchedulerEnumerator
    000000002113A5D0 00000000039c9018 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A628 00000000038cbc28 System.Windows.Controls.ItemContainerGenerator
    000000002113A630 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A640 000000000446b0a8 System.Object[]    (System.Threading.Tasks.Task[])
    000000002113A658 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A660 00000000030aa388 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113A670 00000000038ea4a8 System.Collections.ObjectModel.ObservableCollection`1[[System.Object, mscorlib]]
    000000002113A680 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A688 00000000038eca68 System.Windows.Controls.UIElementCollection
    000000002113A6A0 000000000304ba68 System.Windows.Controls.DataGrid
    000000002113A6A8 000000000304ba68 System.Windows.Controls.DataGrid
    000000002113A710 00000000038cbc28 System.Windows.Controls.ItemContainerGenerator
    000000002113A718 00000000043fb160 System.Collections.Generic.List`1[[System.Windows.Controls.RealizedColumnsBlock, PresentationFramework]]
    000000002113A720 000000000304ba68 System.Windows.Controls.DataGrid
    000000002113A728 000000000304c558 System.Windows.Controls.DataGridColumnCollection
    000000002113A740 00000000038cb6d8 System.Windows.Controls.Primitives.DataGridColumnHeadersPresenter
    000000002113A758 00000000039eff18 System.Windows.Controls.Primitives.DataGridColumnHeader
    000000002113A778 00000000030ac2b0 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113A7A0 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A7B0 0000000002dfc470 System.Windows.DependencyProperty
    000000002113A800 00000000038cd980 System.Boolean
    000000002113A810 00000000038cd980 System.Boolean
    000000002113A820 00000000038cd980 System.Boolean
    000000002113A830 00000000038cd980 System.Boolean
    000000002113A860 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A870 0000000002dfc470 System.Windows.DependencyProperty
    000000002113A8E0 000000000304ba68 System.Windows.Controls.DataGrid
    000000002113A900 00000000038cbc28 System.Windows.Controls.ItemContainerGenerator
    000000002113A908 00000000038cbc28 System.Windows.Controls.ItemContainerGenerator
    000000002113A928 0000000002dfc470 System.Windows.DependencyProperty
    000000002113A9E0 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113A9F8 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113AA90 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113AB28 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113AB48 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113AF30 0000000003862928 System.Windows.Interop.HwndSource
    000000002113AFC0 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113AFF0 0000000003828df8 System.Windows.Interop.HwndTarget
    000000002113AFF8 0000000002dccfe8 System.Windows.Media.MediaContext
    000000002113B008 0000000002dd0300 System.Object
    000000002113B0A8 0000000002dfff80 System.Windows.ContextLayoutManager
    000000002113B0C0 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113B100 0000000003862928 System.Windows.Interop.HwndSource
    000000002113B130 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113B270 00000000038ec0a8 UIH.Mcsf.PA.PAControl.Commons.DataGridCellsPanelEx
    000000002113B278 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113B2B0 0000000003862928 System.Windows.Interop.HwndSource
    000000002113B2C0 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113B2C8 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113B2E0 0000000002dfff80 System.Windows.ContextLayoutManager
    000000002113B300 00000000038288c8 System.Windows.Interop.HwndKeyboardInputProvider
    000000002113B3C0 00000000038288c8 System.Windows.Interop.HwndKeyboardInputProvider
    000000002113B570 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113B580 0000000003862928 System.Windows.Interop.HwndSource
    000000002113B690 0000000003828ac0 MS.Win32.HwndWrapper
    000000002113B6B8 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B6E0 00000000040e9fc8 System.Collections.ArrayList+ReadOnlyArrayList
    000000002113B6F8 00000000040e9fc8 System.Collections.ArrayList+ReadOnlyArrayList
    000000002113B700 00000000038289a8 MS.Win32.HwndWrapperHook
    000000002113B710 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113B728 0000000003828c68 MS.Win32.HwndSubclass
    000000002113B740 00000000043f99f0 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113B760 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B780 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B7B8 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113B7C8 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B7E0 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B7F0 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B840 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B850 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113B860 0000000002dd4dc0 MS.Internal.Threading.ExceptionFilterHelper
    000000002113B868 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113B870 0000000003828c68 MS.Win32.HwndSubclass
    000000002113B898 0000000002dce540 System.Threading.Thread
    000000002113B8A0 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113B908 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113B940 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113B948 00000000043f99f0 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113B958 0000000003828c68 MS.Win32.HwndSubclass
    000000002113B970 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B9C0 0000000003828c68 MS.Win32.HwndSubclass
    000000002113B9D0 0000000003828d38 System.Windows.Threading.DispatcherOperationCallback
    000000002113B9E0 0000000003828c68 MS.Win32.HwndSubclass
    000000002113C168 0000000002d6bd00 System.RuntimeType
    000000002113C1E0 00000000034026c8 UIH.Mcsf.PA.UtilityCSharp.Models.CfgModel
    000000002113C1E8 000000000447d3e0 UIH.Mcsf.PA.UtilityCSharp.Commons.TaskSchedulerExtension.SchedulerEnumerator
    000000002113C318 00000000043f99d0 System.IntPtr[]
    000000002113C348 00000000034026c8 UIH.Mcsf.PA.UtilityCSharp.Models.CfgModel
    000000002113C6D0 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113C7F8 00000000034026c8 UIH.Mcsf.PA.UtilityCSharp.Models.CfgModel
    000000002113C848 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113CB80 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113CC28 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113CF08 0000000002f29fd0 MS.Internal.ReaderWriterLockWrapper
    000000002113CF28 0000000002f29ff8   System.Threading.ReaderWriterLock
    000000002113CFE8 0000000003034318 System.ComponentModel.PropertyChangedEventManager
    000000002113CFF0 0000000002f29fd0 MS.Internal.ReaderWriterLockWrapper
    000000002113D008 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113D078 00000000030342e8 System.RuntimeType
    000000002113D088 00000000043f9810 MS.Internal.Data.PropertyPathWorker
    000000002113D090 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113D0A0 0000000003034318 System.ComponentModel.PropertyChangedEventManager
    000000002113D0B8 0000000004309a50 System.String    PACfgVM
    000000002113D0E8 000000000307d3c0 MS.Internal.NamedObject
    000000002113D0F0 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113D0F8 00000000043f9810 MS.Internal.Data.PropertyPathWorker
    000000002113D108 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113D128 0000000003152388 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113D130 000000000307d3c0 MS.Internal.NamedObject
    000000002113D178 00000000043f99b0 System.WeakReference
    000000002113D180 0000000004069940 System.Reflection.RuntimePropertyInfo
    000000002113D188 0000000002d6bd00 System.RuntimeType
    000000002113D1B8 0000000003152388 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113D1C0 000000000307d3c0 MS.Internal.NamedObject
    000000002113D1C8 00000000043f9810 MS.Internal.Data.PropertyPathWorker
    000000002113D1E0 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113D200 000000000447fb78 System.Threading.Tasks.Task
    000000002113D220 000000000447fb78 System.Threading.Tasks.Task
    000000002113D238 0000000003152388 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113D248 00000000043f9778 MS.Internal.Data.ClrBindingWorker
    000000002113D250 0000000003152388 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113D258 0000000003152388 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113D288 0000000004310760 System.Windows.ModifiedValue
    000000002113D2A8 0000000004309d00 System.Windows.Data.BindingExpression
    000000002113D2B0 0000000004310760 System.Windows.ModifiedValue
    000000002113D2F0 0000000003152388 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113D318 0000000003152388 UIH.Mcsf.PA.UtilityCSharp.Commons.DataGridColumnEx
    000000002113D320 0000000004310760 System.Windows.ModifiedValue
    000000002113D350 000000000444aa08 System.Object[]    (System.Threading.Tasks.Task[])
    000000002113D360 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113D3A0 0000000004309d00 System.Windows.Data.BindingExpression
    000000002113D3B0 0000000003166798 System.Windows.Controls.DataGridColumnCollection
    000000002113D3C0 0000000003165cf0 System.Windows.Controls.DataGrid
    000000002113D3D0 00000000043d2dc8 MS.Internal.Data.DataBindEngine+Task
    000000002113D3F8 0000000002dccfe8 System.Windows.Media.MediaContext
    000000002113D408 0000000002e40508 MS.Internal.Data.DataBindEngine
    000000002113D410 00000000043d2dc8 MS.Internal.Data.DataBindEngine+Task
    000000002113D420 0000000002dccfe8 System.Windows.Media.MediaContext
    000000002113D448 0000000002e41860 System.Boolean
    000000002113D450 0000000002e41860 System.Boolean
    000000002113D458 0000000002e41820 System.Windows.Threading.DispatcherOperationCallback
    000000002113D498 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113D4B8 0000000002e41860 System.Boolean
    000000002113D4C0 0000000002e41820 System.Windows.Threading.DispatcherOperationCallback
    000000002113D4D0 0000000002e41820 System.Windows.Threading.DispatcherOperationCallback
    000000002113D518 0000000002e41860 System.Boolean
    000000002113D520 0000000002e41820 System.Windows.Threading.DispatcherOperationCallback
    000000002113D530 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113D540 0000000002dd4dc0 MS.Internal.Threading.ExceptionFilterHelper
    000000002113D548 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113D578 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113D590 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113D5A8 0000000002dd5c10 System.Threading.ExecutionContext
    000000002113D5B0 0000000002e418d8 System.Threading.ExecutionContext
    000000002113D5F8 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113D600 0000000002e418d8 System.Threading.ExecutionContext
    000000002113D628 000000000444ae08 System.Threading.Tasks.Task
    000000002113D630 000000000444ae08 System.Threading.Tasks.Task
    000000002113D678 0000000002dd5c10 System.Threading.ExecutionContext
    000000002113D680 0000000002e418d8 System.Threading.ExecutionContext
    000000002113D690 0000000002dce540 System.Threading.Thread
    000000002113D710 0000000003c536b8 System.Runtime.CompilerServices.RuntimeHelpers+TryCode
    000000002113D718 000000000444ae08 System.Threading.Tasks.Task
    000000002113D878 0000000003c536b8 System.Runtime.CompilerServices.RuntimeHelpers+TryCode
    000000002113D880 000000000444ae08 System.Threading.Tasks.Task
    000000002113DA10 0000000002dd5c10 System.Threading.ExecutionContext
    000000002113DA20 0000000002e418d8 System.Threading.ExecutionContext
    000000002113DA78 0000000003c536b8 System.Runtime.CompilerServices.RuntimeHelpers+TryCode
    000000002113DA80 000000000444ae08 System.Threading.Tasks.Task
    000000002113DC90 0000000002dd5c10 System.Threading.ExecutionContext
    000000002113DCD0 0000000002e418d8 System.Threading.ExecutionContext
    000000002113DCF8 0000000003c536b8 System.Runtime.CompilerServices.RuntimeHelpers+TryCode
    000000002113DD00 0000000003c536f8 System.Runtime.CompilerServices.RuntimeHelpers+CleanupCode
    000000002113DD08 00000000043e0300 System.Threading.ExecutionContext+ExecutionContextRunData
    000000002113DDF0 0000000002e416d0 System.Threading.ContextCallback
    000000002113DDF8 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113DE00 0000000002e418d8 System.Threading.ExecutionContext
    000000002113DE08 0000000002dd5c10 System.Threading.ExecutionContext
    000000002113DE88 0000000002dd5c10 System.Threading.ExecutionContext
    000000002113DEA0 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113DEA8 0000000002e416d0 System.Threading.ContextCallback
    000000002113DED8 0000000002e416d0 System.Threading.ContextCallback
    000000002113DEE0 0000000002e418d8 System.Threading.ExecutionContext
    000000002113DEF0 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113DF00 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113DF30 0000000002e418d8 System.Threading.ExecutionContext
    000000002113DF38 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113DF40 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113DF50 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113DF98 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113DFA0 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113DFB0 0000000002e41948 System.Windows.Threading.PriorityItem`1[[System.Windows.Threading.DispatcherOperation, WindowsBase]]
    000000002113DFC0 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113E000 0000000002dd4f50 System.Object
    000000002113E018 0000000002e41878 System.Windows.Threading.DispatcherOperation
    000000002113E060 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E070 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E0F8 0000000002dd5d00 System.Object
    000000002113E120 0000000002dd5258 MS.Win32.MessageOnlyHwndWrapper
    000000002113E130 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E148 0000000002dd5b68 System.Windows.Threading.DispatcherOperationCallback
    000000002113E170 0000000003c53688 System.Collections.ArrayList+ReadOnlyArrayList
    000000002113E188 0000000003c53688 System.Collections.ArrayList+ReadOnlyArrayList
    000000002113E190 0000000002dd5c70 MS.Win32.HwndWrapperHook
    000000002113E1A0 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E1A8 0000000002dd5ba8 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113E1B0 0000000002dd5ba8 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113E1B8 0000000002dd5440 MS.Win32.HwndSubclass
    000000002113E1D0 0000000002dd5ba8 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113E1F0 0000000002dd5b68 System.Windows.Threading.DispatcherOperationCallback
    000000002113E210 0000000002dd5b68 System.Windows.Threading.DispatcherOperationCallback
    000000002113E248 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E258 0000000002dd5b68 System.Windows.Threading.DispatcherOperationCallback
    000000002113E268 0000000002dd5ba8 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113E270 0000000002dd5b68 System.Windows.Threading.DispatcherOperationCallback
    000000002113E280 0000000002dd5b68 System.Windows.Threading.DispatcherOperationCallback
    000000002113E2C8 0000000002dd5ba8 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113E2D0 0000000002dd5b68 System.Windows.Threading.DispatcherOperationCallback
    000000002113E2E0 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E2F0 0000000002dd4dc0 MS.Internal.Threading.ExceptionFilterHelper
    000000002113E2F8 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E328 0000000002dce540 System.Threading.Thread
    000000002113E330 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113E398 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113E3D0 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E3D8 0000000002dd5ba8 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113E3E8 0000000002dd5440 MS.Win32.HwndSubclass
    000000002113E400 0000000002dd5b68 System.Windows.Threading.DispatcherOperationCallback
    000000002113E430 0000000002dd5ba8 MS.Win32.HwndSubclass+DispatcherOperationCallbackParameter
    000000002113E460 00000000040f84f0 System.__ComObject
    000000002113E4A8 00000000040ea2f0 System.UInt32[]
    000000002113E580 00000000040ea2f0 System.UInt32[]
    000000002113E7E8 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113E858 00000000039621d8 System.Windows.Threading.DispatcherFrame
    000000002113E8E8 00000000039621d8 System.Windows.Threading.DispatcherFrame
    000000002113E8F8 00000000039621d8 System.Windows.Threading.DispatcherFrame
    000000002113E900 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113E938 0000000002dd4c58 System.Object
    000000002113E960 00000000032e5080 System.Windows.Forms.WindowsFormsSynchronizationContext
    000000002113E968 0000000002dd5238 System.Windows.Threading.DispatcherSynchronizationContext
    000000002113E970 0000000002dd5c10 System.Threading.ExecutionContext
    000000002113E988 00000000032e5080 System.Windows.Forms.WindowsFormsSynchronizationContext
    000000002113E9D0 0000000002dce438 System.Threading.ContextCallback
    000000002113E9F0 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113EA20 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113EA30 0000000002dd4e68 System.Windows.Threading.Dispatcher
    000000002113EA90 000000000379f1f0 UIH.Mcsf.PA.UtilityCSharp.Global.GLobalInit
    000000002113EA98 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113EAA0 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113EAA8 0000000002dce540 System.Threading.Thread
    000000002113EAB0 0000000002d685b0 UIH.Mcsf.Core.CLRCommunicationProxy
    000000002113EAB8 000000000379f198 UIH.Mcsf.PA.FEContainee.Communication.CommunicationSender
    000000002113EAC0 0000000002ea5fd8 System.Diagnostics.Stopwatch
    000000002113EAC8 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113EAD0 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113EAD8 000000000379f198 UIH.Mcsf.PA.FEContainee.Communication.CommunicationSender
    000000002113EAE0 000000000379f1f0 UIH.Mcsf.PA.UtilityCSharp.Global.GLobalInit
    000000002113EAF0 0000000002d70a88 MS.Internal.ContentType
    000000002113EAF8 0000000002ea5fd8 System.Diagnostics.Stopwatch
    000000002113EB00 0000000002ea5fd8 System.Diagnostics.Stopwatch
    000000002113EB08 0000000002d70a88 MS.Internal.ContentType
    000000002113EB10 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113EB18 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113EB20 0000000002d6ea30 UIH.Mcsf.PA.UtilityCSharp.Commons.Logger
    000000002113EB28 0000000002ea5c40 System.String    [performance - pa startup]finish new PAView, spend
    000000002113EB48 0000000002d6ea30 UIH.Mcsf.PA.UtilityCSharp.Commons.Logger
    000000002113EB58 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113EB60 0000000002d6ea30 UIH.Mcsf.PA.UtilityCSharp.Commons.Logger
    000000002113EB68 0000000002ea5d40 System.String    [performance - pa startup]finish new MainViewModel, spend
    000000002113EB98 0000000002d6ea30 UIH.Mcsf.PA.UtilityCSharp.Commons.Logger
    000000002113EBB0 0000000002d6ea30 UIH.Mcsf.PA.UtilityCSharp.Commons.Logger
    000000002113EBB8 0000000002ea5e48 System.String    [performance - pa startup] finish new GLobalInit, spend
    000000002113EBD8 0000000002d6ea30 UIH.Mcsf.PA.UtilityCSharp.Commons.Logger
    000000002113EBE0 0000000002dce540 System.Threading.Thread
    000000002113EBE8 00000000033cb810 UIH.Mcsf.PA.FEContainee.ViewModels.MainViewModel
    000000002113EBF0 0000000002ea6000 UIH.Mcsf.PA.FEContainee.Views.PAView
    000000002113EC00 0000000002d685b0 UIH.Mcsf.Core.CLRCommunicationProxy
    000000002113EC40 0000000002d6d0b0 UIH.Mcsf.PA.FEContainee.Communication.PAFEContainee
    000000002113EC48 0000000002dce540 System.Threading.Thread
    000000002113EC50 0000000002d685b0 UIH.Mcsf.Core.CLRCommunicationProxy
    000000002113EC90 0000000002d6d0b0 UIH.Mcsf.PA.FEContainee.Communication.PAFEContainee
    000000002113EC98 0000000002dce540 System.Threading.Thread
    000000002113F138 0000000002dce540 System.Threading.Thread
    000000002113F140 0000000002dce5c0 System.Threading.ParameterizedThreadStart


    7.写锁最前面的信息是:
    000000002113D088   00000000043f9810  MS.Internal.Data.PropertyPathWorker

    8.根据!do命令得到绑定路径,得知具体控件名,以及它导致了写锁
    0:000> !do   00000000043f9810
    Name:        MS.Internal.Data.PropertyPathWorker
    MethodTable: 000007fee7e6dd90
    EEClass:     000007fee794ebb0
    Size:        88(0x58) bytes
    File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.dll
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fee7e4f050  400057f        8 ...dows.PropertyPath  0 instance   00000000043099b8 _parent
    000007fee8a2e2a0  4000580       40         System.Int32  1 instance                1 _status
    000007fef7825ac8  4000581       10        System.Object  0 instance 0000000004309e00 _treeContext
    000007fef7825ac8  4000582       18        System.Object  0 instance 00000000043f9970 _rootItem
    000007fee7e6de30  4000583       20 ...ourceValueState[]  0 instance 00000000043f9868 _arySVS
    000007fee7e2be48  4000584       28 ...ker+ContextHelper  0 instance 0000000000000000 _contextHelper
    000007fee7e6dc80  4000585       30 ....ClrBindingWorker  0 instance 00000000043f9778 _host
    000007fee7e63198  4000586       38 ...ta.DataBindEngine  0 instance 0000000002e40508 _engine
    000007fef782d688  4000587       44       System.Boolean  1 instance                1 _dependencySourcesChanged
    000007fef782d688  4000588       45       System.Boolean  1 instance                1 _isDynamic
    000007fef782d688  4000589       46       System.Boolean  1 instance                0 _needsDirectNotification
    000007fef782d7f0  400058a       48 ...olean, mscorlib]]  1 instance 00000000043f9858 _isDBNullValidForUpdate
    000007fef782b328  400057a      cc0        System.Char[]  0   static 000000000307d950 s_comma
    000007fef782b328  400057b      cc8        System.Char[]  0   static 000000000307d970 s_dot
    000007fef7825ac8  400057c      cd0        System.Object  0   static 000000000307d990 NoParent
    000007fef7825ac8  400057d      cd8        System.Object  0   static 000000000307d9a8 AsyncRequestPending
    000007fef7825ac8  400057e      ce0        System.Object  0   static 000000000307d9c0 IListIndexOutOfRange
    0:000> !do   00000000043099b8
    Name:        System.Windows.PropertyPath
    MethodTable: 000007fee7e4f050
    EEClass:     000007fee7884638
    Size:        64(0x40) bytes
    File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.dll
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fef7826970  40028c1        8        System.String  0 instance 00000000043098d8 _path
    000007fee7e63048  40028c2       10 ...rameterCollection  0 instance 0000000000000000 _parameters
    000007fee7e63880  40028c3       18 ...SourceValueInfo[]  0 instance 0000000004309bb0 _arySVI
    000007fef7826970  40028c4       20        System.String  0 instance 0000000002d41420 _lastError
    000007fef782ae78  40028c5       28      System.Object[]  0 instance 0000000004309c88 _earlyBoundPathParts
    000007fee7e6dd90  40028c6       30 ...ropertyPathWorker  0 instance 0000000000000000 _singleWorker
    000007fef782b328  40028c0     4010        System.Char[]  0   static 0000000000000000 s_comma
    0:000> !do 00000000043098d8
    Name:        System.String
    MethodTable: 000007fef7826970
    EEClass:     000007fef73aeec8
    Size:        220(0xdc) bytes
    File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
    String:      (FrameworkElement.DataContext).PACfgVM.SeriesHeaderSetting.CfgInfo[colSeriesSendStatus].IsVisible
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fef782c858  40000ed        8         System.Int32  1 instance               97 m_stringLength
    000007fef782b398  40000ee        c          System.Char  1 instance               28 m_firstChar
    000007fef7826970  40000ef       10        System.String  0   shared           static Empty
                                     >> Domain:Value  00000000007f85a0:0000000002d41420 <<


    9.分析读锁最前面的地址
    0000000021137BB8   00000000037af1f0  System.Object[]    (System.String[])


    10.
    0:000> !da -details   00000000037af1f0
    Name:        System.String[]
    MethodTable: 000007fef782ae78
    EEClass:     000007fef73afdb8
    Size:        80(0x50) bytes
    Array:       Rank 1, Number of elements 6, Type CLASS
    Element Methodtable: 000007fef7826970
    [0] 0000000002d936e8
        Name:        System.String
        MethodTable: 000007fef7826970
        EEClass:     000007fef73aeec8
        Size:        30(0x1e) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
        String:            本地   
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef782c858  40000ed        8             System.Int32      1     instance                    2     m_stringLength
            000007fef782b398  40000ee        c              System.Char      1     instance                 672c     m_firstChar
            000007fef7826970  40000ef       10            System.String      0       shared           static     Empty
                                         >> Domain:Value      00000000007f85a0:    0000000002d41420     <<
    [1] 0000000002d937a8
        Name:        System.String
        MethodTable: 000007fef7826970
        EEClass:     000007fef73aeec8
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
        String:           DVD   
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef782c858  40000ed        8             System.Int32      1     instance                    3     m_stringLength
            000007fef782b398  40000ee        c              System.Char      1     instance                   44     m_firstChar
            000007fef7826970  40000ef       10            System.String      0       shared           static     Empty
                                         >> Domain:Value      00000000007f85a0:    0000000002d41420     <<
    [2] 0000000002d93808
        Name:        System.String
        MethodTable: 000007fef7826970
        EEClass:     000007fef73aeec8
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
        String:          USB   
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef782c858  40000ed        8             System.Int32      1     instance                    3     m_stringLength
            000007fef782b398  40000ee        c              System.Char      1     instance                   55     m_firstChar
            000007fef7826970  40000ef       10            System.String      0       shared           static     Empty
                                         >> Domain:Value      00000000007f85a0:    0000000002d41420     <<
    [3] 0000000002d93870
        Name:        System.String
        MethodTable: 000007fef7826970
        EEClass:     000007fef73aeec8
        Size:        34(0x22) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
        String:            网络节点   
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef782c858  40000ed        8             System.Int32      1     instance                    4     m_stringLength
            000007fef782b398  40000ee        c              System.Char      1     instance                 7f51     m_firstChar
            000007fef7826970  40000ef       10            System.String      0       shared           static     Empty
                                         >> Domain:Value      00000000007f85a0:    0000000002d41420     <<
    [4] 0000000002d93748
        Name:        System.String
        MethodTable: 000007fef7826970
        EEClass:     000007fef73aeec8
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
        String:           RIS   
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef782c858  40000ed        8             System.Int32      1     instance                    3     m_stringLength
            000007fef782b398  40000ee        c              System.Char      1     instance                   52     m_firstChar
            000007fef7826970  40000ef       10            System.String      0       shared           static     Empty
                                         >> Domain:Value      00000000007f85a0:    0000000002d41420     <<
    [5] 0000000002d93680
        Name:        System.String
        MethodTable: 000007fef7826970
        EEClass:     000007fef73aeec8
        Size:        30(0x1e) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
        String:           所有   
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef782c858  40000ed        8             System.Int32      1     instance                    2     m_stringLength
            000007fef782b398  40000ee        c              System.Char      1     instance                 6240     m_firstChar
            000007fef7826970  40000ef       10            System.String      0       shared           static     Empty
                                         >> Domain:Value      00000000007f85a0:    0000000002d41420     <<

    11. 
    0:000> !do 00000000039a71d8
    Name:        System.Windows.Controls.Primitives.DataGridColumnHeader
    MethodTable: 000007fee7e58090
    EEClass:     000007fee7885bd8
    Size:        384(0x180) bytes
    File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.dll
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fef3f2eb00  4000db0        8 ...eading.Dispatcher  0 instance 0000000002dd4e68 _dispatcher
    000007fef3f3bb88  4001321       10 ...endencyObjectType  0 instance 000000000308a530 _dType
    000007fef7825ac8  4001322       18        System.Object  0 instance 0000000000000000 _contextStorage
    000007fef3f3e898  4001323       20 ...ctiveValueEntry[]  0 instance 00000000042efb08 _effectiveValues
    000007fef7847b70  4001324       28        System.UInt32  1 instance          3680277 _packedData
    000007fef3f33708  400131f      7c0 ...ependencyProperty  0   static 0000000002dd5ef0 DirectDependencyProperty
    000007fef3f3e7b0  4001320      7c8 ...ndler, mscorlib]]  0   static 0000000002dd5f48 InheritanceContextChangedHandlersField
    000007fef7825ac8  4001325      7d0        System.Object  0   static 0000000002dd5f68 ExpressionInAlternativeStore
    000007fef3f36c98  4001326      7d8 ...onStorageCallback  0   static 0000000002dd7d50 _getExpressionCore
    000007fef3f3e828  4001327      7e0 ...bject, mscorlib]]  0   static 0000000002dd5f80 DependentListMapField
    000007fef3f3bb88  4001328      7e8 ...endencyObjectType  0   static 0000000002dd1690 DType
    000007fef782c858  4000ae0       2c         System.Int32  1 instance                6 _parentIndex
    000007fef3f31630  4000ae1       30 ....DependencyObject  0 instance 0000000000000000 _parent
    000007feecd15260  4000ae2       40 ...ition.VisualProxy  1 instance 00000000039a7218 _proxy
    000007fef3f31530  4000ae3       60  System.Windows.Rect  1 instance 00000000039a7238 _bboxSubgraph
    000007fef3f345d0  4000af6       80 ...em.Windows.Vector  1 instance 00000000039a7258 _offset
    000007feecd2f700  4000af7       38        System.UInt32  1 instance           131852 _flags
    0000000000000000  4000adf      b88                       0   static 0000000002dd0910 BitmapEffectStateField
    0000000000000000  4000ae4      b90                       0   static 0000000002dd0930 CyclicBrushToChannelsMapField
    0000000000000000  4000ae5      b98                       0   static 0000000002dd0950 ChannelsToCyclicBrushMapField
    0000000000000000  4000ae6      ba0                       0   static 0000000002dd0970 ClipField
    000007fef3f40e18  4000ae7      ba8 ...ouble, mscorlib]]  0   static 0000000002dd0990 OpacityField
    0000000000000000  4000ae8      bb0                       0   static 0000000002dd09b0 OpacityMaskField
    0000000000000000  4000ae9      bb8                       0   static 0000000002dd09d0 EdgeModeField
    0000000000000000  4000aea      bc0                       0   static 0000000002dd09f0 BitmapScalingModeField
    0000000000000000  4000aeb      bc8                       0   static 0000000002dd0a10 ClearTypeHintField
    0000000000000000  4000aec      bd0                       0   static 0000000002dd0a30 TransformField
    0000000000000000  4000aed      bd8                       0   static 0000000002dd0a50 EffectField
    0000000000000000  4000aee      be0                       0   static 0000000002dd0a70 CacheModeField
    0000000000000000  4000aef      be8                       0   static 0000000002dd0a90 GuidelinesXField
    0000000000000000  4000af0      bf0                       0   static 0000000002dd0ab0 GuidelinesYField
    0000000000000000  4000af1      bf8                       0   static 0000000002dd0ad0 AncestorChangedEventField
    0000000000000000  4000af2      c00                       0   static 0000000002dd0af0 UserProvidedBitmapEffectData
    000007fef3f40fa0  4000af3      c08 ...ase]], mscorlib]]  0   static 0000000002dd0b10 ScrollableAreaClipField
    0000000000000000  4000af4      c10                       0   static 0000000002dd0b50 TextRenderingModeField
    0000000000000000  4000af5      c18                       0   static 0000000002dd0b70 TextHintingModeField
    000007feecd29ea8  40013cc       b0        System.UInt32  1 instance         12582913 _flags
    000007fef3f31530  40013f0       b8  System.Windows.Rect  1 instance 00000000039a7290 _finalRect
    000007fef3f318e8  40013f1       d8  System.Windows.Size  1 instance 00000000039a72b0 _desiredSize
    000007fef3f318e8  40013f2       e8  System.Windows.Size  1 instance 00000000039a72c0 _previousAvailableSize
    000007feecd1e2b0  40013f3       90 ...a.IDrawingContent  0 instance 0000000000000000 _drawingContent
    000007feecd1ec98  40013f4       98 ...youtQueue+Request  0 instance 0000000000000000 MeasureRequest
    000007feecd1ec98  40013f5       a0 ...youtQueue+Request  0 instance 0000000000000000 ArrangeRequest
    000007fef782c858  40013f6       b4         System.Int32  1 instance                0 _persistId
    000007feecd0d410  4001403       a8 ...s.SizeChangedInfo  0 instance 0000000000000000 sizeChangedInfo
    000007fef3f318e8  400140b       f8  System.Windows.Size  1 instance 00000000039a72d0 _size
    000007fef78282f8  400135c     12b8          System.Type  0   static 0000000002d6cd28 _typeofThis
    000007feecce9088  400135d     12c0 ...ndows.RoutedEvent  0   static 0000000002ddef90 PreviewMouseDownEvent
    000007feecce9088  400135e     12c8 ...ndows.RoutedEvent  0   static 0000000002ddefc0 MouseDownEvent
    000007feecce9088  400135f     12d0 ...ndows.RoutedEvent  0   static 0000000002ddeff0 PreviewMouseUpEvent
    000007feecce9088  4001360     12d8 ...ndows.RoutedEvent  0   static 0000000002ddf080 MouseUpEvent
    000007feecce9088  4001361     12e0 ...ndows.RoutedEvent  0   static 0000000002ddf388 PreviewMouseLeftButtonDownEvent
    000007feecce9088  4001362     12e8 ...ndows.RoutedEvent  0   static 0000000002ddf3b8 MouseLeftButtonDownEvent
    000007feecce9088  4001363     12f0 ...ndows.RoutedEvent  0   static 0000000002ddf3e8 PreviewMouseLeftButtonUpEvent
    000007feecce9088  4001364     12f8 ...ndows.RoutedEvent  0   static 0000000002ddf438 MouseLeftButtonUpEvent
    000007feecce9088  4001365     1300 ...ndows.RoutedEvent  0   static 0000000002ddf468 PreviewMouseRightButtonDownEvent
    000007feecce9088  4001366     1308 ...ndows.RoutedEvent  0   static 0000000002ddf498 MouseRightButtonDownEvent
    000007feecce9088  4001367     1310 ...ndows.RoutedEvent  0   static 0000000002ddf4c8 PreviewMouseRightButtonUpEvent
    000007feecce9088  4001368     1318 ...ndows.RoutedEvent  0   static 0000000002ddf4f8 MouseRightButtonUpEvent
    000007feecce9088  4001369     1320 ...ndows.RoutedEvent  0   static 0000000002ddee88 PreviewMouseMoveEvent
    000007feecce9088  400136a     1328 ...ndows.RoutedEvent  0   static 0000000002ddeed0 MouseMoveEvent
    000007feecce9088  400136b     1330 ...ndows.RoutedEvent  0   static 0000000002ddf0e0 PreviewMouseWheelEvent
    000007feecce9088  400136c     1338 ...ndows.RoutedEvent  0   static 0000000002ddf110 MouseWheelEvent
    000007feecce9088  400136d     1340 ...ndows.RoutedEvent  0   static 0000000002ddf140 MouseEnterEvent
    000007feecce9088  400136e     1348 ...ndows.RoutedEvent  0   static 0000000002ddf170 MouseLeaveEvent
    000007feecce9088  400136f     1350 ...ndows.RoutedEvent  0   static 0000000002ddf1a0 GotMouseCaptureEvent
    000007feecce9088  4001370     1358 ...ndows.RoutedEvent  0   static 0000000002ddf268 LostMouseCaptureEvent
    000007feecce9088  4001371     1360 ...ndows.RoutedEvent  0   static 0000000002ddf2c8 QueryCursorEvent
    000007feecce9088  4001372     1368 ...ndows.RoutedEvent  0   static 0000000002ddfd40 PreviewStylusDownEvent
    000007feecce9088  4001373     1370 ...ndows.RoutedEvent  0   static 0000000002ddfd88 StylusDownEvent
    000007feecce9088  4001374     1378 ...ndows.RoutedEvent  0   static 0000000002ddfde8 PreviewStylusUpEvent
    000007feecce9088  4001375     1380 ...ndows.RoutedEvent  0   static 0000000002ddfe18 StylusUpEvent
    000007feecce9088  4001376     1388 ...ndows.RoutedEvent  0   static 0000000002ddfe48 PreviewStylusMoveEvent
    000007feecce9088  4001377     1390 ...ndows.RoutedEvent  0   static 0000000002ddfe78 StylusMoveEvent
    000007feecce9088  4001378     1398 ...ndows.RoutedEvent  0   static 0000000002ddfea8 PreviewStylusInAirMoveEvent
    000007feecce9088  4001379     13a0 ...ndows.RoutedEvent  0   static 0000000002ddfef8 StylusInAirMoveEvent
    000007feecce9088  400137a     13a8 ...ndows.RoutedEvent  0   static 0000000002ddff28 StylusEnterEvent
    000007feecce9088  400137b     13b0 ...ndows.RoutedEvent  0   static 0000000002ddff58 StylusLeaveEvent
    000007feecce9088  400137c     13b8 ...ndows.RoutedEvent  0   static 0000000002ddff88 PreviewStylusInRangeEvent
    000007feecce9088  400137d     13c0 ...ndows.RoutedEvent  0   static 0000000002ddffb8 StylusInRangeEvent
    000007feecce9088  400137e     13c8 ...ndows.RoutedEvent  0   static 0000000002ddffe8 PreviewStylusOutOfRangeEvent
    000007feecce9088  400137f     13d0 ...ndows.RoutedEvent  0   static 0000000002de0018 StylusOutOfRangeEvent
    000007feecce9088  4001380     13d8 ...ndows.RoutedEvent  0   static 0000000002de0078 PreviewStylusSystemGestureEvent
    000007feecce9088  4001381     13e0 ...ndows.RoutedEvent  0   static 0000000002de00a8 StylusSystemGestureEvent
    000007feecce9088  4001382     13e8 ...ndows.RoutedEvent  0   static 0000000002de00d8 GotStylusCaptureEvent
    000007feecce9088  4001383     13f0 ...ndows.RoutedEvent  0   static 0000000002de0108 LostStylusCaptureEvent
    000007feecce9088  4001384     13f8 ...ndows.RoutedEvent  0   static 0000000002de0168 StylusButtonDownEvent
    000007feecce9088  4001385     1400 ...ndows.RoutedEvent  0   static 0000000002de0268 StylusButtonUpEvent
    000007feecce9088  4001386     1408 ...ndows.RoutedEvent  0   static 0000000002de0298 PreviewStylusButtonDownEvent
    000007feecce9088  4001387     1410 ...ndows.RoutedEvent  0   static 0000000002de02c8 PreviewStylusButtonUpEvent
    000007feecce9088  4001388     1418 ...ndows.RoutedEvent  0   static 0000000002de0e08 PreviewKeyDownEvent
    000007feecce9088  4001389     1420 ...ndows.RoutedEvent  0   static 0000000002de0e50 KeyDownEvent
    000007feecce9088  400138a     1428 ...ndows.RoutedEvent  0   static 0000000002de0e80 PreviewKeyUpEvent
    000007feecce9088  400138b     1430 ...ndows.RoutedEvent  0   static 0000000002de0eb0 KeyUpEvent
    000007feecce9088  400138c     1438 ...ndows.RoutedEvent  0   static 0000000002de0f10 PreviewGotKeyboardFocusEvent
    000007feecce9088  400138d     1440 ...ndows.RoutedEvent  0   static 0000000002de0ff0 GotKeyboardFocusEvent
    000007feecce9088  400138e     1448 ...ndows.RoutedEvent  0   static 0000000002de1020 PreviewLostKeyboardFocusEvent
    000007feecce9088  400138f     1450 ...ndows.RoutedEvent  0   static 0000000002de1050 LostKeyboardFocusEvent
    000007feecce9088  4001390     1458 ...ndows.RoutedEvent  0   static 0000000002de13f0 PreviewTextInputEvent
    000007feecce9088  4001391     1460 ...ndows.RoutedEvent  0   static 0000000002de1420 TextInputEvent
    000007feecce9088  4001392     1468 ...ndows.RoutedEvent  0   static 0000000002de18e0 PreviewQueryContinueDragEvent
    000007feecce9088  4001393     1470 ...ndows.RoutedEvent  0   static 0000000002de1928 QueryContinueDragEvent
    000007feecce9088  4001394     1478 ...ndows.RoutedEvent  0   static 0000000002de1988 PreviewGiveFeedbackEvent
    000007feecce9088  4001395     1480 ...ndows.RoutedEvent  0   static 0000000002de19b8 GiveFeedbackEvent
    000007feecce9088  4001396     1488 ...ndows.RoutedEvent  0   static 0000000002de1a18 PreviewDragEnterEvent
    000007feecce9088  4001397     1490 ...ndows.RoutedEvent  0   static 0000000002de1a48 DragEnterEvent
    000007feecce9088  4001398     1498 ...ndows.RoutedEvent  0   static 0000000002de1a78 PreviewDragOverEvent
    000007feecce9088  4001399     14a0 ...ndows.RoutedEvent  0   static 0000000002de1ac8 DragOverEvent
    000007feecce9088  400139a     14a8 ...ndows.RoutedEvent  0   static 0000000002de1af8 PreviewDragLeaveEvent
    000007feecce9088  400139b     14b0 ...ndows.RoutedEvent  0   static 0000000002de1b28 DragLeaveEvent
    000007feecce9088  400139c     14b8 ...ndows.RoutedEvent  0   static 0000000002de1bd8 PreviewDropEvent
    000007feecce9088  400139d     14c0 ...ndows.RoutedEvent  0   static 0000000002de1c08 DropEvent
    000007feecce9088  400139e     14c8 ...ndows.RoutedEvent  0   static 0000000002de2008 PreviewTouchDownEvent
    000007feecce9088  400139f     14d0 ...ndows.RoutedEvent  0   static 0000000002de2050 TouchDownEvent
    000007feecce9088  40013a0     14d8 ...ndows.RoutedEvent  0   static 0000000002de2080 PreviewTouchMoveEvent
    000007feecce9088  40013a1     14e0 ...ndows.RoutedEvent  0   static 0000000002de20b0 TouchMoveEvent
    000007feecce9088  40013a2     14e8 ...ndows.RoutedEvent  0   static 0000000002de20e0 PreviewTouchUpEvent
    000007feecce9088  40013a3     14f0 ...ndows.RoutedEvent  0   static 0000000002de2110 TouchUpEvent
    000007feecce9088  40013a4     14f8 ...ndows.RoutedEvent  0   static 0000000002de2140 GotTouchCaptureEvent
    000007feecce9088  40013a5     1500 ...ndows.RoutedEvent  0   static 0000000002de2190 LostTouchCaptureEvent
    000007feecce9088  40013a6     1508 ...ndows.RoutedEvent  0   static 0000000002de21c0 TouchEnterEvent
    000007feecce9088  40013a7     1510 ...ndows.RoutedEvent  0   static 0000000002de21f0 TouchLeaveEvent
    0000000000000000  40013a8     1518                       0   static 0000000002de2350 IsMouseDirectlyOverPropertyKey
    000007fef3f33708  40013a9     1520 ...ependencyProperty  0   static 0000000002de2390 IsMouseDirectlyOverProperty
    000007feeccecbc0  40013aa     1528 ...s.EventPrivateKey  0   static 0000000002de2440 IsMouseDirectlyOverChangedKey
    0000000000000000  40013ab     1530                       0   static 0000000002de24c8 IsMouseOverPropertyKey
    000007fef3f33708  40013ac     1538 ...ependencyProperty  0   static 0000000002de2508 IsMouseOverProperty
    0000000000000000  40013ad     1540                       0   static 0000000002de25f0 IsStylusOverPropertyKey
    000007fef3f33708  40013ae     1548 ...ependencyProperty  0   static 0000000002de2630 IsStylusOverProperty
    0000000000000000  40013af     1550                       0   static 0000000002de2750 IsKeyboardFocusWithinPropertyKey
    000007fef3f33708  40013b0     1558 ...ependencyProperty  0   static 0000000002de2790 IsKeyboardFocusWithinProperty
    000007feeccecbc0  40013b1     1560 ...s.EventPrivateKey  0   static 0000000002de2808 IsKeyboardFocusWithinChangedKey
    0000000000000000  40013b2     1568                       0   static 0000000002de28d0 IsMouseCapturedPropertyKey
    000007fef3f33708  40013b3     1570 ...ependencyProperty  0   static 0000000002de2910 IsMouseCapturedProperty
    000007feeccecbc0  40013b4     1578 ...s.EventPrivateKey  0   static 0000000002de29c0 IsMouseCapturedChangedKey
    0000000000000000  40013b5     1580                       0   static 0000000002de2a48 IsMouseCaptureWithinPropertyKey
    000007fef3f33708  40013b6     1588 ...ependencyProperty  0   static 0000000002de2a88 IsMouseCaptureWithinProperty
    000007feeccecbc0  40013b7     1590 ...s.EventPrivateKey  0   static 0000000002de2b38 IsMouseCaptureWithinChangedKey
    0000000000000000  40013b8     1598                       0   static 0000000002de2c00 IsStylusDirectlyOverPropertyKey
    000007fef3f33708  40013b9     15a0 ...ependencyProperty  0   static 0000000002de2c40 IsStylusDirectlyOverProperty
    000007feeccecbc0  40013ba     15a8 ...s.EventPrivateKey  0   static 0000000002de2cf0 IsStylusDirectlyOverChangedKey
    0000000000000000  40013bb     15b0                       0   static 0000000002de3418 IsStylusCapturedPropertyKey
    000007fef3f33708  40013bc     15b8 ...ependencyProperty  0   static 0000000002de3458 IsStylusCapturedProperty
    000007feeccecbc0  40013bd     15c0 ...s.EventPrivateKey  0   static 0000000002de3508 IsStylusCapturedChangedKey
    0000000000000000  40013be     15c8                       0   static 0000000002de3590 IsStylusCaptureWithinPropertyKey
    000007fef3f33708  40013bf     15d0 ...ependencyProperty  0   static 0000000002de35d0 IsStylusCaptureWithinProperty
    000007feeccecbc0  40013c0     15d8 ...s.EventPrivateKey  0   static 0000000002de3680 IsStylusCaptureWithinChangedKey
    0000000000000000  40013c1     15e0                       0   static 0000000002de3748 IsKeyboardFocusedPropertyKey
    000007fef3f33708  40013c2     15e8 ...ependencyProperty  0   static 0000000002de3788 IsKeyboardFocusedProperty
    000007feeccecbc0  40013c3     15f0 ...s.EventPrivateKey  0   static 0000000002de3800 IsKeyboardFocusedChangedKey
    0000000000000000  40013c4     15f8                       0   static 0000000002de3888 AreAnyTouchesDirectlyOverPropertyKey
    000007fef3f33708  40013c5     1600 ...ependencyProperty  0   static 0000000002de38c8 AreAnyTouchesDirectlyOverProperty
    0000000000000000  40013c6     1608                       0   static 0000000002de39e8 AreAnyTouchesOverPropertyKey
    000007fef3f33708  40013c7     1610 ...ependencyProperty  0   static 0000000002de3a28 AreAnyTouchesOverProperty
    0000000000000000  40013c8     1618                       0   static 0000000002de3b48 AreAnyTouchesCapturedPropertyKey
    000007fef3f33708  40013c9     1620 ...ependencyProperty  0   static 0000000002de3b88 AreAnyTouchesCapturedProperty
    0000000000000000  40013ca     1628                       0   static 0000000002de3ca8 AreAnyTouchesCapturedWithinPropertyKey
    000007fef3f33708  40013cb     1630 ...ependencyProperty  0   static 0000000002de3ce8 AreAnyTouchesCapturedWithinProperty
    000007fef3f33708  40013cd     1638 ...ependencyProperty  0   static 0000000002de3e30 AllowDropProperty
    000007fef3f33708  40013ce     1640 ...ependencyProperty  0   static 0000000002de3f80 RenderTransformProperty
    000007fef3f33708  40013cf     1648 ...ependencyProperty  0   static 0000000002de4198 RenderTransformOriginProperty
    000007fef3f33708  40013d0     1650 ...ependencyProperty  0   static 0000000002de4338 OpacityProperty
    000007fef3f33708  40013d1     1658 ...ependencyProperty  0   static 0000000002de4520 OpacityMaskProperty
    000007fef3f33708  40013d2     1660 ...ependencyProperty  0   static 0000000002de46d8 BitmapEffectProperty
    000007fef3f33708  40013d3     1668 ...ependencyProperty  0   static 0000000002de4890 EffectProperty
    000007fef3f33708  40013d4     1670 ...ependencyProperty  0   static 0000000002de4a48 BitmapEffectInputProperty
    000007fef3f33708  40013d5     1678 ...ependencyProperty  0   static 0000000002de4c00 CacheModeProperty
    000007fef3f33708  40013d6     1680 ...ependencyProperty  0   static 0000000002de4d48 UidProperty
    000007fef3f33708  40013d7     1688 ...ependencyProperty  0   static 0000000002de4f88 VisibilityProperty
    000007fef3f33708  40013d8     1690 ...ependencyProperty  0   static 0000000002de50d8 ClipToBoundsProperty
    000007fef3f33708  40013d9     1698 ...ependencyProperty  0   static 0000000002de5290 ClipProperty
    000007fef3f33708  40013da     16a0 ...ependencyProperty  0   static 0000000002de5418 SnapsToDevicePixelsProperty
    000007feecce9088  40013db     16a8 ...ndows.RoutedEvent  0   static 0000000002de5590 GotFocusEvent
    000007feecce9088  40013dc     16b0 ...ndows.RoutedEvent  0   static 0000000002de55d8 LostFocusEvent
    0000000000000000  40013dd     16b8                       0   static 0000000002de5938 IsFocusedPropertyKey
    000007fef3f33708  40013de     16c0 ...ependencyProperty  0   static 0000000002de5978 IsFocusedProperty
    000007fef3f33708  40013df     16c8 ...ependencyProperty  0   static 0000000002de5b40 IsEnabledProperty
    000007feeccecbc0  40013e0     16d0 ...s.EventPrivateKey  0   static 0000000002de5bb8 IsEnabledChangedKey
    000007fef3f33708  40013e1     16d8 ...ependencyProperty  0   static 0000000002de5ce8 IsHitTestVisibleProperty
    000007feeccecbc0  40013e2     16e0 ...s.EventPrivateKey  0   static 0000000002de5d98 IsHitTestVisibleChangedKey
    000007fef3f312a8  40013e3     16e8 ....PropertyMetadata  0   static 0000000002de5e30 _isVisibleMetadata
    0000000000000000  40013e4     16f0                       0   static 0000000002de5ea8 IsVisiblePropertyKey
    000007fef3f33708  40013e5     16f8 ...ependencyProperty  0   static 0000000002de5ee8 IsVisibleProperty
    000007feeccecbc0  40013e6     1700 ...s.EventPrivateKey  0   static 0000000002de5fc8 IsVisibleChangedKey
    000007fef3f33708  40013e7     1708 ...ependencyProperty  0   static 0000000002de60b8 FocusableProperty
    000007feeccecbc0  40013e8     1710 ...s.EventPrivateKey  0   static 0000000002de6130 FocusableChangedKey
    000007fef3f33708  40013e9     1718 ...ependencyProperty  0   static 0000000002de6220 IsManipulationEnabledProperty
    000007feecce9088  40013ea     1720 ...ndows.RoutedEvent  0   static 0000000002de6518 ManipulationStartingEvent
    000007feecce9088  40013eb     1728 ...ndows.RoutedEvent  0   static 0000000002de6590 ManipulationStartedEvent
    000007feecce9088  40013ec     1730 ...ndows.RoutedEvent  0   static 0000000002de65f0 ManipulationDeltaEvent
    000007feecce9088  40013ed     1738 ...ndows.RoutedEvent  0   static 0000000002de6650 ManipulationInertiaStartingEvent
    000007feecce9088  40013ee     1740 ...ndows.RoutedEvent  0   static 0000000002de66f8 ManipulationBoundaryFeedbackEvent
    000007feecce9088  40013ef     1748 ...ndows.RoutedEvent  0   static 0000000002de6758 ManipulationCompletedEvent
    000007fef78480f0  40013f7     13e0        System.Double  1   static 1.000000 _dpiScaleX
    000007fef78480f0  40013f8     13e8        System.Double  1   static 1.000000 _dpiScaleY
    000007fef782d688  40013f9     13f0       System.Boolean  1   static                0 _setDpi
    0000000000000000  40013fa     1750                       0   static 0000000002de6ab0 EventHandlersStoreField
    0000000000000000  40013fb     1758                       0   static 0000000002de6ad0 InputBindingCollectionField
    0000000000000000  40013fc     1760                       0   static 0000000002de6af0 CommandBindingCollectionField
    000007fef3f3e828  40013fd     1768 ...bject, mscorlib]]  0   static 0000000002de6b10 LayoutUpdatedListItemsField
    000007fef3f3e7b0  40013fe     1770 ...ndler, mscorlib]]  0   static 0000000002de6b30 LayoutUpdatedHandlersField
    0000000000000000  40013ff     1778                       0   static 0000000002de6b50 StylusPlugInsField
    0000000000000000  4001400     1780                       0   static 0000000002de6b70 AutomationPeerField
    0000000000000000  4001401     1788                       0   static 0000000002de6b90 MeasureDataField
    0000000000000000  4001402     1790                       0   static 0000000002de6bb0 PreviousMeasureDataField
    000007feecd12930  4001404     1798 ...cusWithinProperty  0   static 0000000002de6bd0 FocusWithinProperty
    000007feecd12a48  4001405     17a0 ...MouseOverProperty  0   static 0000000002de6bf8 MouseOverProperty
    000007feecd12ad8  4001406     17a8 ...ureWithinProperty  0   static 0000000002de6c20 MouseCaptureWithinProperty
    000007feecd12b68  4001407     17b0 ...tylusOverProperty  0   static 0000000002de6c48 StylusOverProperty
    000007feecd12bf8  4001408     17b8 ...ureWithinProperty  0   static 0000000002de6c70 StylusCaptureWithinProperty
    000007feecd12c88  4001409     17c0 ...uchesOverProperty  0   static 0000000002de6c98 TouchesOverProperty
    000007feecd12d18  400140a     17c8 ...redWithinProperty  0   static 0000000002de6cc0 TouchesCapturedWithinProperty
    000007fee7e3c790  400015b      108 System.Windows.Style  0 instance 00000000038f8110 _themeStyleCache
    000007fee7e3c790  400015e      110 System.Windows.Style  0 instance 0000000000000000 _styleCache
    000007fef3f31630  4000160      118 ....DependencyObject  0 instance 0000000000000000 _templatedParent
    000007feecce1308  4000161      120 ...Windows.UIElement  0 instance 00000000039a78d8 _templateChild
    000007fee7e815a0  4000162      138        System.UInt32  1 instance       1164482625 _flags
    000007fee8a2c318  4000163      13c        System.UInt32  1 instance            65535 _flags2
    000007fef3f31630  400016d      128 ....DependencyObject  0 instance 0000000000000000 _parent
    000007fef3f3f338  400016e      130 ...ty, WindowsBase]]  0 instance 0000000000000000 _inheritableProperties
    000007fef78282f8  400012a      4b0          System.Type  0   static 0000000002d6cc88 _typeofThis
    000007fef3f33708  400012b      4b8 ...ependencyProperty  0   static 0000000002ea6c68 StyleProperty
    000007fef3f33708  400012c      4c0 ...ependencyProperty  0   static 0000000002dd1948 OverridesDefaultStyleProperty
    000007fef3f33708  400012d      4c8 ...ependencyProperty  0   static 0000000002dd1ae8 UseLayoutRoundingProperty
    000007fef3f33708  400012e      4d0 ...ependencyProperty  0   static 0000000002dd1c70 DefaultStyleKeyProperty
    000007feecceaff8  400012f      4d8 ...umberSubstitution  0   static 0000000002dd1ce8 DefaultNumberSubstitution
    000007fef3f33708  4000130      4e0 ...ependencyProperty  0   static 0000000002dd1de0 DataContextProperty
    000007feeccecbc0  4000131      4e8 ...s.EventPrivateKey  0   static 0000000002dd1e58 DataContextChangedKey
    000007fef3f33708  4000132      4f0 ...ependencyProperty  0   static 0000000002dd2ec0 BindingGroupProperty
    000007fef3f33708  4000133      4f8 ...ependencyProperty  0   static 0000000002dd32c0 LanguageProperty
    000007fef3f33708  4000134      500 ...ependencyProperty  0   static 0000000002dd36a0 NameProperty
    000007fef3f33708  4000135      508 ...ependencyProperty  0   static 0000000002dd37e8 TagProperty
    000007fef3f33708  4000136      510 ...ependencyProperty  0   static 0000000002dd3fd8 InputScopeProperty
    000007feecce9088  4000137      518 ...ndows.RoutedEvent  0   static 0000000002dd4118 RequestBringIntoViewEvent
    000007feecce9088  4000138      520 ...ndows.RoutedEvent  0   static 0000000002dd4190 SizeChangedEvent
    000007fef3f312a8  4000139      528 ....PropertyMetadata  0   static 0000000002dd4218 _actualWidthMetadata
    0000000000000000  400013a      530                       0   static 0000000002dd4290 ActualWidthPropertyKey
    000007fef3f33708  400013b      538 ...ependencyProperty  0   static 0000000002dd42d0 ActualWidthProperty
    000007fef3f312a8  400013c      540 ....PropertyMetadata  0   static 0000000002dd4408 _actualHeightMetadata
    0000000000000000  400013d      548                       0   static 0000000002dd4480 ActualHeightPropertyKey
    000007fef3f33708  400013e      550 ...ependencyProperty  0   static 0000000002dd44c0 ActualHeightProperty
    000007fef3f33708  400013f      558 ...ependencyProperty  0   static 0000000002dd6268 LayoutTransformProperty
    000007fef3f33708  4000140      560 ...ependencyProperty  0   static 0000000002dd6bd8 WidthProperty
    000007fef3f33708  4000141      568 ...ependencyProperty  0   static 0000000002dd6d80 MinWidthProperty
    000007fef3f33708  4000142      570 ...ependencyProperty  0   static 0000000002dd6f60 MaxWidthProperty
    000007fef3f33708  4000143      578 ...ependencyProperty  0   static 0000000002dd7140 HeightProperty
    000007fef3f33708  4000144      580 ...ependencyProperty  0   static 0000000002dd72e8 MinHeightProperty
    000007fef3f33708  4000145      588 ...ependencyProperty  0   static 0000000002dd7490 MaxHeightProperty
    000007fef3f33708  4000146      590 ...ependencyProperty  0   static 0000000002dd7670 FlowDirectionProperty
    000007fef3f33708  4000147      598 ...ependencyProperty  0   static 0000000002dd7800 MarginProperty
    000007fef3f33708  4000148      5a0 ...ependencyProperty  0   static 0000000002dd79d0 HorizontalAlignmentProperty
    000007fef3f33708  4000149      5a8 ...ependencyProperty  0   static 0000000002dd7ba0 VerticalAlignmentProperty
    000007fee7e3c790  400014a      5b0 System.Windows.Style  0   static 0000000002dd7c50 _defaultFocusVisualStyle
    000007fef3f33708  400014b      5b8 ...ependencyProperty  0   static 0000000002dd80e8 FocusVisualStyleProperty
    000007fef3f33708  400014c      5c0 ...ependencyProperty  0   static 0000000002dd8268 CursorProperty
    000007fef3f33708  400014d      5c8 ...ependencyProperty  0   static 0000000002dd83f0 ForceCursorProperty
    000007feeccecbc0  400014e      5d0 ...s.EventPrivateKey  0   static 0000000002dd84a0 InitializedKey
    0000000000000000  400014f      5d8                       0   static 0000000002dd8588 LoadedPendingPropertyKey
    000007fef3f33708  4000150      5e0 ...ependencyProperty  0   static 0000000002dd85c8 LoadedPendingProperty
    0000000000000000  4000151      5e8                       0   static 0000000002dd86e8 UnloadedPendingPropertyKey
    000007fef3f33708  4000152      5f0 ...ependencyProperty  0   static 0000000002dd8728 UnloadedPendingProperty
    000007feecce9088  4000153      5f8 ...ndows.RoutedEvent  0   static 0000000002dd8808 LoadedEvent
    000007feecce9088  4000154      600 ...ndows.RoutedEvent  0   static 0000000002dd8838 UnloadedEvent
    000007fef3f33708  4000155      608 ...ependencyProperty  0   static 0000000002dd8c60 ToolTipProperty
    000007fef3f33708  4000156      610 ...ependencyProperty  0   static 0000000002ddc450 ContextMenuProperty
    000007feecce9088  4000157      618 ...ndows.RoutedEvent  0   static 0000000002dd9850 ToolTipOpeningEvent
    000007feecce9088  4000158      620 ...ndows.RoutedEvent  0   static 0000000002dd9898 ToolTipClosingEvent
    000007feecce9088  4000159      628 ...ndows.RoutedEvent  0   static 0000000002dddc40 ContextMenuOpeningEvent
    000007feecce9088  400015a      630 ...ndows.RoutedEvent  0   static 0000000002dddc88 ContextMenuClosingEvent
    0000000000000000  400015c      638                       0   static 0000000002dddfd0 UnclippedDesiredSizeField
    0000000000000000  400015d      640                       0   static 0000000002dddff0 LayoutTransformDataField
    0000000000000000  400015f      648                       0   static 0000000002dde010 ResourcesField
    000007fef3f3bb88  4000164      650 ...endencyObjectType  0   static 0000000002dd1640 UIElementDType
    000007fef3f3bb88  4000165      658 ...endencyObjectType  0   static 0000000000000000 _controlDType
    000007fef3f3bb88  4000166      660 ...endencyObjectType  0   static 0000000000000000 _contentPresenterDType
    000007fef3f3bb88  4000167      668 ...endencyObjectType  0   static 0000000000000000 _pageFunctionBaseDType
    000007fef3f3bb88  4000168      670 ...endencyObjectType  0   static 0000000000000000 _pageDType
    000007feeccecbc0  400016a      678 ...s.EventPrivateKey  0   static 0000000002dde030 ResourcesChangedKey
    000007feeccecbc0  400016b      680 ...s.EventPrivateKey  0   static 0000000002dde048 InheritedPropertyChangedKey
    000007fef3f3bb88  400016c      688 ...endencyObjectType  0   static 0000000002ea6d30 DType
    000007fef3f3df90  400016f      690 ...ct, WindowsBase]]  0   static 0000000002dde060 InheritanceContextField
    000007fef3f3df90  4000170      698 ...ct, WindowsBase]]  0   static 0000000002dde080 MentorField
    000007fee7e3fbb8  4000169        0 ...FrameworkServices  0 TLstatic  _frameworkServices
        >> Thread:Value 198:0000000002dfdf60 <<
    000007fee7e402d0  40002be      140 ...s.ControlTemplate  0 instance 00000000038f8350 _templateCache
    000007fee8a07038  40002bf      148        System.UInt16  1 instance                0 _controlBoolField
    000007fef3f33708  40002ad      8c8 ...ependencyProperty  0   static 0000000002dfc160 BorderBrushProperty
    000007fef3f33708  40002ae      8d0 ...ependencyProperty  0   static 0000000002dfbbf0 BorderThicknessProperty
    000007fef3f33708  40002af      8d8 ...ependencyProperty  0   static 0000000002dfc2f8 BackgroundProperty
    000007fef3f33708  40002b0      8e0 ...ependencyProperty  0   static 0000000002deea30 ForegroundProperty
    000007fef3f33708  40002b1      8e8 ...ependencyProperty  0   static 0000000002dece38 FontFamilyProperty
    000007fef3f33708  40002b2      8f0 ...ependencyProperty  0   static 0000000002dedfd0 FontSizeProperty
    000007fef3f33708  40002b3      8f8 ...ependencyProperty  0   static 0000000002ded138 FontStretchProperty
    000007fef3f33708  40002b4      900 ...ependencyProperty  0   static 0000000002decf38 FontStyleProperty
    000007fef3f33708  40002b5      908 ...ependencyProperty  0   static 0000000002ded038 FontWeightProperty
    000007fef3f33708  40002b6      910 ...ependencyProperty  0   static 0000000002ed5540 HorizontalContentAlignmentProperty
    000007fef3f33708  40002b7      918 ...ependencyProperty  0   static 0000000002ed56e0 VerticalContentAlignmentProperty
    000007fef3f33708  40002b8      920 ...ependencyProperty  0   static 0000000002dfb1c8 TabIndexProperty
    000007fef3f33708  40002b9      928 ...ependencyProperty  0   static 0000000002dfb280 IsTabStopProperty
    000007fef3f33708  40002ba      930 ...ependencyProperty  0   static 0000000002ed58a8 PaddingProperty
    000007fef3f33708  40002bb      938 ...ependencyProperty  0   static 0000000002ed5a90 TemplateProperty
    000007feecce9088  40002bc      940 ...ndows.RoutedEvent  0   static 0000000002ed5b40 PreviewMouseDoubleClickEvent
    000007feecce9088  40002bd      948 ...ndows.RoutedEvent  0   static 0000000002dfd158 MouseDoubleClickEvent
    000007fef3f33708  40002ca      950 ...ependencyProperty  0   static 0000000002dfd820 ContentProperty
    0000000000000000  40002cb      958                       0   static 0000000002dfd908 HasContentPropertyKey
    000007fef3f33708  40002cc      960 ...ependencyProperty  0   static 0000000002dfd948 HasContentProperty
    000007fef3f33708  40002cd      968 ...ependencyProperty  0   static 0000000002dfdb00 ContentTemplateProperty
    000007fef3f33708  40002ce      970 ...ependencyProperty  0   static 0000000002dfdc80 ContentTemplateSelectorProperty
    000007fef3f33708  40002cf      978 ...ependencyProperty  0   static 0000000002dfddd0 ContentStringFormatProperty
    000007fef3f3bb88  40002d0      980 ...endencyObjectType  0   static 0000000002dfabb0 _dType
    000007feecce9088  400100d     1570 ...ndows.RoutedEvent  0   static 0000000002eba090 ClickEvent
    000007fef3f33708  400100e     1578 ...ependencyProperty  0   static 0000000002eba1d0 CommandProperty
    000007fef3f33708  400100f     1580 ...ependencyProperty  0   static 0000000002eba318 CommandParameterProperty
    000007fef3f33708  4001010     1588 ...ependencyProperty  0   static 0000000002eba460 CommandTargetProperty
    0000000000000000  4001011     1590                       0   static 0000000002eba5c0 IsPressedPropertyKey
    000007fef3f33708  4001012     1598 ...ependencyProperty  0   static 0000000002eba600 IsPressedProperty
    000007fef3f33708  4001013     15a0 ...ependencyProperty  0   static 0000000002eba7d0 ClickModeProperty
    000007fef3f3e7b0  4001014     15a8 ...ndler, mscorlib]]  0   static 0000000002eba880 CanExecuteChangedHandler
    000007fee8a7d410  40015f0      150 ...ls.DataGridColumn  0 instance 00000000030a7910 _column
    000007fee8a85b48  40015f1      158 ...tationFramework]]  0 instance 00000000039a7358 _tracker
    000007fee7e56d88  40015f2      160 ...nHeadersPresenter  0 instance 0000000000000000 _parentPresenter
    000007fee7e4aaf8  40015f3      168 ....Primitives.Thumb  0 instance 00000000039ace80 _leftGripper
    000007fee7e4aaf8  40015f4      170 ....Primitives.Thumb  0 instance 00000000039ad328 _rightGripper
    000007fef782d688  40015f5      14a       System.Boolean  1 instance                0 _suppressClickEvent
    000007fef3f33708  40015e6     25e8 ...ependencyProperty  0   static 000000000308a4d8 SeparatorBrushProperty
    000007fef3f33708  40015e7     25f0 ...ependencyProperty  0   static 000000000308a660 SeparatorVisibilityProperty
    0000000000000000  40015e8     25f8                       0   static 000000000308a818 DisplayIndexPropertyKey
    000007fef3f33708  40015e9     2600 ...ependencyProperty  0   static 000000000308a858 DisplayIndexProperty
    0000000000000000  40015ea     2608                       0   static 000000000308a9d0 CanUserSortPropertyKey
    000007fef3f33708  40015eb     2610 ...ependencyProperty  0   static 000000000308aa10 CanUserSortProperty
    0000000000000000  40015ec     2618                       0   static 000000000308abb0 SortDirectionPropertyKey
    000007fef3f33708  40015ed     2620 ...ependencyProperty  0   static 000000000308abf0 SortDirectionProperty
    0000000000000000  40015ee     2628                       0   static 000000000308ad68 IsFrozenPropertyKey
    000007fef3f33708  40015ef     2630 ...ependencyProperty  0   static 000000000308ada8 IsFrozenProperty
    0:000> !do 0000000002dfd820
    Name:        System.Windows.DependencyProperty
    MethodTable: 000007fef3f33708
    EEClass:     000007fef3dd7550
    Size:        88(0x58) bytes
    File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fef7826970  400133c        8        System.String  0 instance 0000000002dfd630 _name
    000007fef78282f8  400133d       10          System.Type  0 instance 0000000002d444b0 _propertyType
    000007fef78282f8  400133e       18          System.Type  0 instance 0000000002dfab80 _ownerType
    000007fef3f312a8  400133f       20 ....PropertyMetadata  0 instance 0000000002dfd7c0 _defaultMetadata
    000007fef3f31088  4001340       28 ...dateValueCallback  0 instance 0000000000000000 _validateValueCallback
    000007fef3f3e750  4001341       30 ...ndencyPropertyKey  0 instance 0000000000000000 _readOnlyKey
    000007fef4194818  4001342       40         System.Int32  1 instance          4194530 _packedData
    000007fef3f3e408  4001343       48 ....InsertionSortMap  1 instance 0000000002dfd868 _metadataMap
    000007fef3f30fc8  4001344       38 ...erceValueCallback  0 instance 0000000000000000 _designerCoerceValueCallback
    000007fef7825ac8  400133b      808        System.Object  0   static 0000000002d72000 UnsetValue
    000007fef3f3c6c0  4001345      800 ...ty, WindowsBase]]  1   static 0000000012d5bb10 RegisteredPropertyList
    000007fef7831c38  4001346      810 ...ections.Hashtable  0   static 0000000002d6f3d8 PropertyFromName
    000007fef782c858  4001347      5c8         System.Int32  1   static              868 GlobalIndexCount
    000007fef7825ac8  4001348      818        System.Object  0   static 0000000002d6f430 Synchronized
    000007fef78282f8  4001349      820          System.Type  0   static 0000000002d68808 NullableType
    0:000> .formats 0n4194530
    Evaluate expression:
      Hex:     00000000`004000e2
      Decimal: 4194530
      Octal:   0000000000000020000342
      Binary:  00000000 00000000 00000000 00000000 00000000 01000000 00000000 11100010
      Chars:   .....@..
      Time:    Wed Feb 18 21:08:50 1970
      Float:   low 5.87779e-039 high 0
      Double:  2.07237e-317
    0:000> .formats 00e2
    Evaluate expression:
      Hex:     00000000`000000e2
      Decimal: 226
      Octal:   0000000000000000000342
      Binary:  00000000 00000000 00000000 00000000 00000000 00000000 00000000 11100010
      Chars:   ........
      Time:    Thu Jan 01 08:03:46 1970
      Float:   low 3.16693e-043 high 0
      Double:  1.11659e-321
    0:000> !da -details 00000000042efb08
    Name:        System.Windows.EffectiveValueEntry[]
    MethodTable: 000007fef3f3e898
    EEClass:     000007fef3e0c8a0
    Size:        408(0x198) bytes
    Array:       Rank 1, Number of elements 24, Type VALUETYPE
    Element Methodtable: 000007fef3f36120
    [0] 00000000042efb18
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000002e1c5d8     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                    3     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    2     _source
    [1] 00000000042efb28
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000032164b8     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                    5     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    2     _source
    [2] 00000000042efb38
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000002f2dbc8     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                    9     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    2     _source
    [3] 00000000042efb48
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000002d93618     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                   11     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   11     _source
    [4] 00000000042efb58
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000043fe270     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                   27     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   11     _source
    [5] 00000000042efb68
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000039a7380     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                   40     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   11     _source
    [6] 00000000042efb78
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000043fe138     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                   49     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   11     _source
    [7] 00000000042efb88
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000030d1bf0     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                   78     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    2     _source
    [8] 00000000042efb98
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000003050ba8     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  108     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    2     _source
    [9] 00000000042efba8
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000002d92ad0     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  141     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    2     _source
    [10] 00000000042efbb8
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000030924d8     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  145     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    5     _source
    [11] 00000000042efbc8
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000003075198     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  151     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    2     _source
    [12] 00000000042efbd8
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000042efaf0     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  202     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   11     _source
    [13] 00000000042efbe8
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000038f82e8     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  223     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    3     _source
    [14] 00000000042efbf8
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000038f8350     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  225     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    3     _source
    [15] 00000000042efc08
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000042efca0     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  226     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   65     _source
    [16] 00000000042efc18
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000002dd1840     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  227     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   11     _source
    [17] 00000000042efc28
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000002dd1858     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  319     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    2     _source
    [18] 00000000042efc38
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000042efd18     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  724     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   65     _source
    [19] 00000000042efc48
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     00000000043982f0     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  727     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   65     _source
    [20] 00000000042efc58
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000002d93618     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                  806     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                   11     _source
    [21] 00000000042efc68
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000000000000     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                   -1     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    0     _source
    [22] 00000000042efc78
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000000000000     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                   -1     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    0     _source
    [23] 00000000042efc88
        Name:        System.Windows.EffectiveValueEntry
        MethodTable: 000007fef3f36120
        EEClass:     000007fef3dd8c90
        Size:        32(0x20) bytes
        File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
        Fields:
                          MT    Field   Offset                 Type VT     Attr            Value Name
            000007fef7825ac8  400136e        0            System.Object      0     instance     0000000000000000     _value
            000007fef7830940  400136f        8             System.Int16      1     instance                   -1     _propertyIndex
            000007fef41949d0  4001370        a             System.Int16      1     instance                    0     _source
    0:000> !do 00000000042efca0    
    Name:        System.Windows.ModifiedValue
    MethodTable: 000007fef3f40d58
    EEClass:     000007fef3e0d000
    Size:        48(0x30) bytes
    File:        C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase\v4.0_4.0.0.0__31bf3856ad364e35\WindowsBase.dll
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fef7825ac8  4001387        8        System.Object  0 instance 0000000000000000 _baseValue
    000007fef7825ac8  4001388       10        System.Object  0 instance 0000000000000000 _expressionValue
    000007fef7825ac8  4001389       18        System.Object  0 instance 0000000000000000 _animatedValue
    000007fef7825ac8  400138a       20        System.Object  0 instance 0000000002d93618 _coercedValue
    0:000> !do 0000000002d93618
    Name:        System.String
    MethodTable: 000007fef7826970
    EEClass:     000007fef73aeec8
    Size:        36(0x24) bytes
    File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
    String:      导入数据源
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fef782c858  40000ed        8         System.Int32  1 instance                5 m_stringLength
    000007fef782b398  40000ee        c          System.Char  1 instance             5bfc m_firstChar
    000007fef7826970  40000ef       10        System.String  0   shared           static Empty
                                     >> Domain:Value  00000000007f85a0:0000000002d41420 <<

    12.由第8和第11点可知是由于
    一个DataGrid列头(导入数据源)的Combox(其值为:所有,本地,DVD,网络节点,RIS)更新内容时和另外的列头(序列归档状态)的可见不可见更新死锁。


    总结下分析步骤:
    1.确定是哪个线程死锁, 比如是UI线程, 
    2.利用命令~*e !clrstack确定线程ID
    3.利用命令~ 线程ID号e !clrstack -p 和~ 线程ID号e !dso查看详细信息
    4.查找Lock,Monitor.Enter,Wait等关键字,确定锁位置
    5.利用命令 !do   单对象内存地址,   !da -details   数组对象内存地址来查看锁附件代码执行的情况。
    6.根据代码情况,去除某一个锁发生的条件,即可解决死锁问题。




    网上疑似问题:



    展开全文
  • OpenSSL编程(三合一版).zip

    热门讨论 2010-06-01 14:38:17
    Openssl EVP 138 21.1 EVP简介 138 21.2 数据结构 138 21.2.1 EVP_PKEY 138 21.2.2 EVP_MD 139 21.2.3 EVP_CIPHER 140 21.2.4 EVP_CIPHER_CTX 141 21.3 源码结构 141 21.4 摘要函数 142 ...
  • openssl编程

    千次下载 热门讨论 2008-04-23 16:29:28
    Openssl EVP 138 21.1 EVP简介 138 21.2 数据结构 138 21.2.1 EVP_PKEY 138 21.2.2 EVP_MD 139 21.2.3 EVP_CIPHER 140 21.2.4 EVP_CIPHER_CTX 141 21.3 源码结构 141 21.4 摘要函数 142 ...
  • WinDbg调试CPU占用高的问题 试验+实战 《第七篇》 一、High CPU试验  1、示例代码 static void Main(string[] args) { Console.Clear...

    一、High CPU试验

      1、示例代码

            static void Main(string[] args)
            {
                Console.Clear();
                Console.WriteLine("到命令行下,切换到windbg目录,执行adplus -hang -pn highcpu.exe -o c:\\dumps");
                Console.WriteLine("如果要停止,按Ctrl+C结束程序");
                Console.WriteLine("====================================================");
                
                while (true)
                {
                    Console.SetCursorPosition(0, 3);
                    Console.Write(DateTime.Now.Ticks.ToString());
                }
    
                Console.ReadKey();
            }

      2、运行控制台程序后,抓取3次Dump,最好每次间隔几分钟。

      3、分别对每个Dump执行如下指令。

    第一个Dump:
    0:000> .load clr20\sos.dll
    0:000> !runaway
     User Mode Time
      Thread       Time
       0:334       0 days 0:00:00.468
       3:dc8       0 days 0:00:00.000
       2:14d0      0 days 0:00:00.000
       1:750       0 days 0:00:00.000
    
    第二个Dump:
    0:000> .load clr20\sos.dll
    0:000> !runaway
     User Mode Time
      Thread       Time
       0:334       0 days 0:00:08.221
       3:dc8       0 days 0:00:00.000
       2:14d0      0 days 0:00:00.000
       1:750       0 days 0:00:00.000
    
    第三个Dump:
    0:000> .load clr20\sos.dll
    0:000> !runaway
     User Mode Time
      Thread       Time
       0:334       0 days 0:00:11.559
       3:dc8       0 days 0:00:00.000
       2:14d0      0 days 0:00:00.000
       1:750       0 days 0:00:00.000

      从上面的输出可以看到,线程0的CPU时间不断增加,CPU高占用很可能是由于线程0正在执行的代码有问题造成的。

      可以用!clrstack命令查看一下当前的调用堆栈以及其上的局部变量和值。

      当执行!clrstack时,报出了如下提示:

    0:000> !clrstack
    Failed to find runtime DLL (mscorwks.dll), 0x80004005
    Extension commands need mscorwks.dll in order to have something to do.

      这不是我想要的,加载mscorwks失败。后来经过调试发现,原来是第一步就.load时就错了,因为我的那段代码用的是vs2010。所以应该加载.net frameword 4.0。

      所以,最初应该执行的.load C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/sos.dll

      然后在执行!clrstack

      第三个Dump

    0:000> !clrstack
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for clr.dll - 
    PDB symbol for clr.dll not loaded
    OS Thread Id: 0x334 (0)
    Child SP       IP Call Site
    001cf2b8 779e70f4 [InlinedCallFrame: 001cf2b8] 
    001cf2b4 6a14672e *** WARNING: Unable to verify checksum for mscorlib.ni.dll
    DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, COORD)
    001cf2b8 6a1b6cfd [InlinedCallFrame: 001cf2b8] Microsoft.Win32.Win32Native.SetConsoleCursorPosition(IntPtr, COORD)
    001cf2ec 6a1b6cfd System.Console.SetCursorPosition(Int32, Int32)
    001cf324 005500bb *** WARNING: Unable to verify checksum for ConsoleApplication3.exe
    ConsoleApplication3.Program.Main(System.String[]) [C:\Users\ChenZhuo\documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs @ 22]
    001cf4dc 70a33e22 [GCFrame: 001cf4dc] 

      第二个Dump

    0:000> !clrstack
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for clr.dll - 
    PDB symbol for clr.dll not loaded
    OS Thread Id: 0x334 (0)
    Child SP       IP Call Site
    001cf2b8 779e70f4 [InlinedCallFrame: 001cf2b8] 
    001cf2b4 6a14672e *** WARNING: Unable to verify checksum for mscorlib.ni.dll
    DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, COORD)
    001cf2b8 6a1b6cfd [InlinedCallFrame: 001cf2b8] Microsoft.Win32.Win32Native.SetConsoleCursorPosition(IntPtr, COORD)
    001cf2ec 6a1b6cfd System.Console.SetCursorPosition(Int32, Int32)
    001cf324 005500bb *** WARNING: Unable to verify checksum for ConsoleApplication3.exe
    ConsoleApplication3.Program.Main(System.String[]) [C:\Users\ChenZhuo\documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs @ 22]
    001cf4dc 70a33e22 [GCFrame: 001cf4dc] 

      第一个Dump:

    0:000> !clrstack
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for clr.dll - 
    PDB symbol for clr.dll not loaded
    OS Thread Id: 0x334 (0)
    Child SP       IP Call Site
    001cf2b8 779e70f4 [InlinedCallFrame: 001cf2b8] 
    001cf2b4 6a14672e *** WARNING: Unable to verify checksum for mscorlib.ni.dll
    DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, COORD)
    001cf2b8 6a1b6cfd [InlinedCallFrame: 001cf2b8] Microsoft.Win32.Win32Native.SetConsoleCursorPosition(IntPtr, COORD)
    001cf2ec 6a1b6cfd System.Console.SetCursorPosition(Int32, Int32)
    001cf324 005500bb *** WARNING: Unable to verify checksum for ConsoleApplication3.exe
    ConsoleApplication3.Program.Main(System.String[]) [C:\Users\ChenZhuo\documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs @ 22]
    001cf4dc 70a33e22 [GCFrame: 001cf4dc] 

      不知道为什么,我的第三个Dump并没有出现HighCPU的提示,也许是我的电脑配置有点高吧。不过,出问题的代码已可以看得到,就在Main方法里。只需要细细查看Main方法找到问题所在就OK了。

      学习自:http://www.cnblogs.com/juqiang/archive/2008/01/11/1035689.html

    二、High CPU问题实战

      公司的系统最近每隔一段时间就会突然变卡,CPU暴增,24核的CPU经常跑到25%,系统卡得不能动。项目经理终于忍不住了,叫我排查一下。

      首先,抓了3个DUMP,都是在系统卡的时候,隔个几分钟抓一次。

      由于服务器是64位的系统,而我的Win7是32位的系统,感觉老是有问题,一方面由于自己还是一个新手,很多问题一碰到就茫然,干脆直接偷偷在服务器装了个Windbg。

      首先,装载如sos.dll

    .load C:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos.dll

      然后逐个执行"!runaway"然后看下线程的CPU时间:

    第一个DUMP:
    47:4690 0 days 0:10:08.887 83:6914 0 days 0:08:52.727 46:6c88 0 days 0:04:13.813 45:a4d0 0 days 0:04:01.037 40:6d94 0 days 0:03:51.146 44:1c60 0 days 0:03:46.341 39:3fdc 0 days 0:03:46.107 37:eb0 0 days 0:03:28.791 41:11c0 0 days 0:03:27.184 38:9858 0 days 0:03:20.898 49:7b90 0 days 0:03:09.759 第二个DUMP: 47:4690 0 days 0:11:39.570 83:6914 0 days 0:08:54.334 46:6c88 0 days 0:04:46.339 45:a4d0 0 days 0:04:32.518 40:6d94 0 days 0:04:24.889 44:1c60 0 days 0:04:21.894 39:3fdc 0 days 0:04:21.863 37:eb0 0 days 0:04:00.335 41:11c0 0 days 0:03:57.495 38:9858 0 days 0:03:52.753 49:7b90 0 days 0:03:39.353 第三个DUMP: 47:4690 0 days 0:13:01.050 83:6914 0 days 0:08:55.645 46:6c88 0 days 0:05:16.089 45:a4d0 0 days 0:04:59.334 40:6d94 0 days 0:04:55.668 39:3fdc 0 days 0:04:53.328 44:1c60 0 days 0:04:53.079 37:eb0 0 days 0:04:31.800 41:11c0 0 days 0:04:26.496 38:9858 0 days 0:04:20.568 49:7b90 0 days 0:04:06.169

      很明显47号线程占用CPU时间非常厉害。

      查看一下特殊线程:

    0:000> !threads -special
    ThreadCount: 32
    UnstartedThread: 0
    BackgroundThread: 32
    PendingThread: 0
    DeadThread: 0
    Hosted Runtime: no
                                                  PreEmptive                                                Lock
           ID OSID        ThreadOBJ     State   GC     GC Alloc Context                  Domain           Count APT Exception
    ...
      83   18 6914 0000000009e7e190   180b220 Enabled  0000000000000000:0000000000000000 000000000372e6e0     1 MTA (Threadpool Worker)
    ...
    
           OSID     Special thread type
       47   4690    GC 
    ...
       83   6914    ThreadpoolWorker 
    ...

      从输出可以看到,47号线程是一个GC线程。有点眉目了,看到问题的情况极有可能是GC频繁引起的CPU升高。

      我们执行如下命令,查看所有线程的调用堆栈:

    0:000> ~* kb
    ...
    83 Id: 7558.6914 Suspend: 0 Teb: 000007ff`ffe56000 Unfrozen RetAddr : Args to Child : Call Site 000007fe`fd6d10dc : 00000002`2f3cfe10 00000001`5faa1eb0 00000000`11606268 000007fe`fd6d64da : ntdll!ZwWaitForSingleObject+0xa 000007fe`f128d0e0 : 00000000`ffffffff 00000000`ffffffff 00000002`00000000 00000000`00000460 : KERNELBASE!WaitForSingleObjectEx+0x79 000007fe`f128d1e3 : 00000000`00000000 00000000`09e7e190 00000000`00000000 00000000`ffffffff : mscorwks!MethodTableBuilder::MethodSignature::GetMethodAttributes+0xa8 000007fe`f138e250 : 00000000`0b65c640 000007fe`f138e289 0000739d`00000004 00000000`00000001 : mscorwks!CLREvent::WaitEx+0x63 000007fe`f15a9596 : 00000000`00064000 000007fe`f129b6cb ffffffff`fffffffe 000007fe`f1286920 : mscorwks!SVR::gc_heap::wait_for_gc_done+0x80 000007fe`f17339cc : 00000000`00000007 000007fe`f129b6ef 00000001`1ff9e250 00000000`00064930 : mscorwks!SVR::GCHeap::GarbageCollectGeneration+0x206 000007fe`f13996a2 : 00000000`00000000 00000000`0b65c810 00000000`00064930 000007fe`00000007 : mscorwks!SVR::gc_heap::try_allocate_more_space+0x1ac 000007fe`f136ecef : 00000000`00000002 00000000`00000000 00000000`00000038 00000000`00000038 : mscorwks!SVR::gc_heap::allocate_more_space+0x32 000007fe`f12d7278 : 00000000`00000038 00000000`00000038 00000000`09e7e1f8 000007fe`f12d71b1 : mscorwks!SVR::gc_heap::allocate_large_object+0x5f 000007fe`f12d758e : 00000000`010b25e0 00000002`838d92c8 00000000`0006492c 00000000`0003248a : mscorwks!SVR::GCHeap::Alloc+0x198 000007fe`f17b9433 : 00000001`7f8ce378 00000000`09e7e190 00000000`0b65c9a8 00000000`09e7e190 : mscorwks!SlowAllocateString+0x7e 000007fe`f051beec : 00000000`00032489 00000000`00000000 00000000`00000000 00000000`00000002 : mscorwks!FramedAllocateString+0xd3 000007ff`00cf0313 : 00000001`5f3ecd98 00000001`1ff9e098 00000002`55400368 00000000`00000000 : mscorlib_ni+0x2ebeec 000007ff`012b0ac5 : 00000001`5f3ecd98 00000001`5f418988 00000001`ff350370 00000002`4f89cd50 : 0x7ff`00cf0313
    ...

      这时输出的内容可能非常多,但是没关系,我们关注的只是哪个线程引起的GC,我们可以在返回中检索一下GarbageCollectGeneration就OK了,这个是GC的入口函数。

      检索到是83号线程,那么为什么83号线程会触发GC呢?我们切换到线程83。

    0:000> ~83s
    ntdll!ZwWaitForSingleObject+0xa:
    00000000`776712fa c3              ret

      查看线程的调用堆栈:

    0:083> !clrstack
    OS Thread Id: 0x6914 (83)
    Child-SP         RetAddr          Call Site
    000000000b65cae0 000007ff00cf0313 System.String.Concat(System.String, System.String, System.String)
    000000000b65cb40 000007ff012b0ac5 xxx.TE.Web.Service.Management.CompositeFieldService.GetCompositeFieldContent(System.Web.HttpContextBase, System.String, TE.Web.Domain.Management.CompositeField, Int32)
    000000000b65cfd0 000007ff0126d39b TE.Web.Areas.Cases.Controllers.WritDataBagController.PageWritContent(System.String, Int32)
    000000000b65d410 000007fee7ca082c DynamicClass.lambda_method(System.Runtime.CompilerServices.ExecutionScope, System.Web.Mvc.ControllerBase, System.Object[])
    000000000b65d460 000007fee7ca31ef System.Web.Mvc.ReflectedActionDescriptor.Execute(System.Web.Mvc.ControllerContext, System.Collections.Generic.IDictionary`2<System.String,System.Object>)
    000000000b65d4c0 000007fee7ca47b5 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(System.Web.Mvc.ControllerContext, System.Web.Mvc.ActionDescriptor, System.Collections.Generic.IDictionary`2<System.String,System.Object>)
    000000000b65d500 000007fee7ca354f System.Web.Mvc.ControllerActionInvoker+<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a()
    000000000b65d560 000007fee7ca3780 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(System.Web.Mvc.IActionFilter, System.Web.Mvc.ActionExecutingContext, System.Func`1<System.Web.Mvc.ActionExecutedContext>)
    000000000b65d5f0 000007fee7ca3186 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(System.Web.Mvc.ControllerContext, System.Collections.Generic.IList`1<System.Web.Mvc.IActionFilter>, System.Web.Mvc.ActionDescriptor, System.Collections.Generic.IDictionary`2<System.String,System.Object>)
    000000000b65d650 000007fee7ca9f5d System.Web.Mvc.ControllerActionInvoker.InvokeAction(System.Web.Mvc.ControllerContext, System.String)
    000000000b65d6f0 000007fee7c9b8f0 System.Web.Mvc.Controller.ExecuteCore()
    000000000b65d750 000007fee7c9c245 System.Web.Mvc.MvcHandler+<>c__DisplayClass8.<BeginProcessRequest>b__4()
    000000000b65d790 000007fee7cd4c7f System.Web.Mvc.Async.AsyncResultWrapper+<>c__DisplayClass1.<MakeVoidDelegate>b__0()
    000000000b65d7d0 000007fee7c9c035 System.Web.Mvc.Async.AsyncResultWrapper+<>c__DisplayClass8`1[[System.Web.Mvc.Async.AsyncVoid, System.Web.Mvc]].<BeginSynchronous>b__7(System.IAsyncResult)
    000000000b65d800 000007fee7c9b7e3 System.Web.Mvc.Async.AsyncResultWrapper+WrappedAsyncResult`1[[System.Web.Mvc.Async.AsyncVoid, System.Web.Mvc]].End()
    000000000b65d840 000007feecab5576 System.Web.Mvc.MvcHandler.EndProcessRequest(System.IAsyncResult)
    000000000b65d870 000007feeca78867 System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
    000000000b65d920 000007feed16e8f1 System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
    000000000b65d9c0 000007feed15ef52 System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception)
    000000000b65db50 000007feed140749 System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback)
    000000000b65dba0 000007feed2713a1 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)
    000000000b65dcc0 000007feed270f6b System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
    000000000b65de40 000007feed270e34 System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)
    000000000b65dea0 000007fef141b08a DomainNeutralILStubClass.IL_STUB(Int64, Int64, Int64, Int32)
    000000000b65e6d0 000007feed2714d0 DomainNeutralILStubClass.IL_STUB(IntPtr, System.Web.RequestNotificationStatus ByRef)
    000000000b65e7b0 000007feed270f6b System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
    000000000b65e930 000007feed270e34 System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)
    000000000b65e990 000007fef141b2db DomainNeutralILStubClass.IL_STUB(Int64, Int64, Int64, Int32)

      发现到String.Concat就没了,从代码猜测,可能是程序在做字符串拼接,申请内存不到,所以才会触发强烈的GC操作。我们来看看该线程上的内存分配:

    0:083> !dso
    OS Thread Id: 0x6914 (83)
    RSP/REG          Object           Name
    000000000b65c470 000000022f3cfe10 System.Web.HttpApplication+PipelineStepManager
    000000000b65c8a8 00000002838d92c8 System.String
    000000000b65ca10 000000014f620fe0 System.String
    000000000b65ca18 00000002838d92c8 System.String
    000000000b65ca20 000000014f621260 System.String
    000000000b65ca38 000000022f3cfe10 System.Web.HttpApplication+PipelineStepManager
    000000000b65ca98 000000022f3cfe10 System.Web.HttpApplication+PipelineStepManager
    000000000b65caa0 000000022f3cfe10 System.Web.HttpApplication+PipelineStepManager
    000000000b65cab0 00000001dfc47d28 System.String
    000000000b65cab8 000000014f621260 System.String
    000000000b65cad0 000000014f620fe0 System.String
    000000000b65cb00 000000014f620fe0 System.String
    000000000b65cb30 000000014f620fe0 System.String
    000000000b65cb40 000000015f3ecd98 TE.Web.Service.Management.CompositeFieldService
    000000000b65cb98 0000000287523340 System.String
    000000000b65cba0 000000024f89d1f0 System.Collections.Generic.List`1[[xxx.TE.Web.Domain.Management.CompositeField, xxx.TE.Web.Domain]]
    000000000b65cbb8 000000024f89d218 TE.Web.Domain.Management.CompositeField
    000000000b65cbc0 000000024f89db28 System.Text.RegularExpressions.Regex
    000000000b65cbc8 000000024f89e028 System.Text.RegularExpressions.MatchCollection
    000000000b65cbd0 000000011fb05380 System.Collections.Hashtable
    000000000b65cbd8 000000011fb05238 System.String
    000000000b65cbe0 000000011fb05288 System.String
    ...

      由于线程堆栈是执行到字符串就停止了,所以我们找几个字符串试试运气,从最上面(最后)分配的开始:

    0:083> !objsize 00000002838d92c8
    sizeof(00000002838d92c8) =       411936 (     0x64920) bytes (System.String)

      400多K的字符串,打开来看下这个字符串里面是些什么?

    0:083> !do 00000002838d92c8
    Name: System.String
    MethodTable: 000007fef0667d90
    EEClass: 000007fef026e560
    Size: 411932(0x6491c) bytes
     (C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
    String: 粤A87xxx,粤ACxxx挂......
    Fields:
                  MT    Field   Offset                 Type VT     Attr            Value Name
    000007fef066f000  4000096        8         System.Int32  1 instance           205954 m_arrayLength
    000007fef066f000  4000097        c         System.Int32  1 instance           205953 m_stringLength
    000007fef06697d8  4000098       10          System.Char  1 instance             7ca4 m_firstChar
    000007fef0667d90  4000099       20        System.String  0   shared           static Empty
                                     >> Domain:Value  000000000112bef0:00000001ff350370 000000000372e6e0:00000001ff350370 <<
    000007fef0669688  400009a       28        System.Char[]  0   shared           static WhitespaceChars
                                     >> Domain:Value  000000000112bef0:00000001ff350b60 000000000372e6e0:00000001ff3588e8 <<

      做到这里,本次系统变卡的原因貌似已经有一个说法已经说得过去了,就是Asp.net尝试分配一个大对象,.Net中超过85Kb就叫大对象。但是内存不足,于是触发GC回收,回收不到一个400Kb长的内存块,于是报了一个内存溢出异常。

        这个道理乍一看,似乎说得通,但是实际上很诡异,.Net上只是使用了2G左右的内存,一共24G内存的服务器为什么只是用了2G内存,GC拼命回收垃圾呢?为什么只是用了2G内存就分配不出400KB的内存了呢? 

        在这个地方,卡住了,中途以为是内存频繁分配造成大量碎片,往内存碎片方向跟过,最后确定与内存碎片无关。原因是不相信这个东西。因为服务器是24CPU24G内存。24G内存使用了2G内存就出现这个问题。

        这个问题想了两天,百思不得其解。后来,又无意中发现了一个小苗头。

    !dumpheap -stat
    0:000> !dumpheap -stat
    ------------------------------
    …
    000007fef0668168        1      136  System.OutOfMemoryException
    …
    000007fef066f8b0  67392    46915920System.Collections.Hashtable+bucket[]
    000007fef0667d90  291003    96055608 System.String
    Total 2737406 objects
    Fragmented blocks larger than 0.5 MB:
              Addr    Size      Followed by
    000000014f92ff10    4.2MB 000000014fd5c698 System.String
    000000019fb89940    6.3MB 00000001a01d57b8 System.Threading.OverlappedData
    000000020fb18698    5.7MB 00000002100ccc70 System.Threading.Overlapped

      在上千行的返回结果中,居然无意中瞟到一个System.OutOfMemoryException。熟悉C#的应该都知道,这个是内存溢出异常,当内存不足时才会发生。

      本来说分配不出400KB内存我还很怀疑,现在又无意中从上千行的返回结果中瞟到这一行代码。确定是内存问题,于是怀疑是Asp.net配置文件不正确,导致系统最多只能够用到2G内存呢?因为Asp.net Web.Config里面的processModel节点有个memoryLimit参数,可以设置Asp.net能够使用的最大内存。但是从网站一直跟到服务器的配置文件,都没有发现有设置该参数,也就是说,Asp.net使用默认设置是60%。24G*60%最大是能够使用14G左右的内存。 太诡异了,实在想不通。最后,只有碰碰运气了,随便输入些变量看看值有没有什么问题。(实际上本处也有章法可依,如果此时找到不问题,最应该就是找到这次请求的参数,重现与当时客户一样的操作),当随手在输入如下命令之后,突然眼前一亮。

      依次执行如下3个指令:

    0:083> !do 000000015f416b08  //换了个DUMP,本来这个地址是出现在 !dso命令里的
    Name: System.Web.HttpContext
    MethodTable: 000007feecc075c8
    EEClass: 000007feec862438
    Size: 336(0x150) bytes
    (C:\Windows\assembly\GAC_64\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll)
    Fields:
                  MT    Field  Offset                Type VT    Attr            Value Name
    000007feecc0a0f0  4000fe6      8 ...IHttpAsyncHandler  0 instance0000000000000000 _asyncAppHandler
    000007feecc09c20 4000fe7      10...b.HttpApplication  0 instance 000000022f3cc5d0 _appInstance
    000007feecc0a160 4000fe8      18....Web.IHttpHandler  0 instance 000000015f418c48 _handler
    000007feecc0a5a0  4000fe9      20 ...m.Web.HttpRequest  0instance 000000015f416c58 _request
    
    0:083> !do 000000015f416c58
    <Note: this object has an invalid CLASSfield>
    Name: System.Web.HttpRequest
    MethodTable: 000007feecc0a5a0
    EEClass: 000007feec863d30
    Size: 336(0x150) bytes
    (C:\Windows\assembly\GAC_64\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll)
    Fields:
                  MT    Field  Offset                Type VT    Attr            Value Name
    …
    000007feecb76150  4001095      c0...tpValueCollection  0 instance 000000015f417a80 _queryString
    …
    
    0:083> !do 000000015f418ec0
    Name: System.String
    MethodTable: 000007fef0667d90
    EEClass: 000007fef026e560
    Size: 90(0x5a) bytes
    (C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
    String:_=1400639407322&CaseCode=&Page=0
    Fields:
                  MT    Field  Offset                Type VT    Attr            Value Name
    000007fef066f000 4000096        8        System.Int32  1 instance              33 m_arrayLength

      以上3个命令,分明是找到HttpContext对象,再找到HttpContext对象的Reqest对象,再找到Request对象的QueryString(请求参数)

      留意CaseCode,居然是Null(由于我对此系统的逻辑还是比较熟悉的。知道CaseCode为Null是不正常的情况)怎么可能呢。用户是怎样操作出来的呢?

        打开系统办案台,找到文书随便点一下。最后终于发现,如果用户在相应文书上选择在新窗口中打开(IE中是鼠标单击的时候轻轻拖了一下),就能够发起这样的请求。

          So,我直接在线上的系统模仿了几次这样的操作,并且紧紧盯着资源监视器。发现,在40分钟之后(2424G内存果然不是盖的)w3wp.exe的内存已经上升到了5G。随后,系统就变慢,跟之前的症状一模一样。

        于是,打开本地的代码,找到相应的代码段。

        //[HttpPost]为提高性能用GET提交方式
        publicActionResult PageWritContent(string CaseCode, intPage)
        {…}

      此处设置为了允许Get请求,这没什么不妥,但是当我模拟用户操作的时候,进一步跟踪发现,当CaseCode为Null的时候,系统的SQL语句如下:

    select xxx,xxx,xx,xxx,xxxfrom xxx
    where 1 = 1
    and (xxx = 1 or xxx = 0)
    and xxx = 0

      这个SQL语句相当于把整个数据库的案件都查出来了。更重要的是,还关联查出了xxx,xxx,xxx,xxx,xxx,xxx,xxx等7张关联表的数据。说白了就是,把系统这几年的数据都翻出来了。由于数据比较敏感,把表名,字段之类的都用xxx代替了。

      当在本地执行相同操作时,Visual Studio输出栏拼命地输出查询语句数千行。

        整个问题的来龙去脉是:由于代码逻辑不严谨,导致当缺少参数时,把整个数据库的数据都查询出来,内存不足,.Net的垃圾回收机制启动,尽职尽责的GC努力回收内存,导致CPU飙升,系统运行变慢,甚至卡死,造成客户端长时间无响应。同时,服务器内存是24G,分配给.Net应用程序池更少(不可能把整个数据库的案件全部读取到内存中),导致无论GC如何努力,最终都还是报出了一个OutMemoryException异常。问题终于水落石出。

        这个Bug比较隐晦。主要是引起Bug的操作并不会立即看到效果,而是过1、2个小时才会出现变卡的情况,所以很容易过了测试。而在调试阶段,如果程序员不是特别留意那几个页面,也很难会留意到这种问题。

        不得不说,通过抓DUMP来找到系统问题,这的确是一门手艺活。能够发现隐藏的比较深的Bug。

      检查过同类型的文书,发现有近一半的文书都是允许以Get方式加载文书,同时又不检查案件编号是否为空的情况,例如xxx文书,xxx文书等。因此,修正如下代码逻辑,在加载文书时,检查案件编号是否为空,当案件编号为空的时候,直接返回。而Get方式加载逻辑上并没有问题,保留也可。

        至此,暂时已经解决系统突然变慢的一个问题,下一步就是把代码更新上服务器之后观察一段时间,看还会不会出现有高CPU或内存溢出的其他问题。

    posted on 2014-05-16 09:28  逆心 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/kissdodog/p/3731476.html

    展开全文
  • /home/xg/soft/jdk1.8.0_201 Random Testing Seed : 3FDE87BE65FC5A8F BUILD SUCCESSFUL in 16s 177 actionable tasks: 138 executed, 39 up-to-date 2.3 IDEA 配置 将项目倒入到IDEA中,通过Run->Edit ...

    1 简介

    由于工作方向是大数据搜索,因此最近着手深入了解es的实现原理,学习以下相关源码。以下是笔者搭建的es调试环境的步骤,贴在此处以便于查阅,后续相关问题会继续更新在这里。

    2 搭建过程

    2.1 软件环境

    • java version “1.8.0_201”
    • Gradle 4.3
    • IntelliJ IDEA 2020.1 (Ultimate Edition)
    • Ubuntu 20.04 x64
    • elasticsearsh-6.1.2
      java 和 gradle,直接配置到环境变量中即可,笔者配置在~/.bashrc中,内容如下:
      export JAVA_HOME=/home/xg/soft/usuallyused/jdk1.8.0_201
      export GRADLE_HOME=/home/xg/soft/usuallyused/gradle-4.3
      export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$MAVEN_HOME/bin:$CUDA_HOME/bin:$GRADLE_HOME/bin
      

    2.2 生成IDEA配置

    配置好java和gradle环境后,解压es源码
    cd elasticsearch-6.1.2/
    ./gradlew idea
    如下出现BUILD SUCCESSFUL 即位生成IDEA配置成功,若是第一次生成idea配置可能需要下载一些配置文件和依赖包。

    ~/elasticsearch-6.1.2$ ./gradlew idea
    To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/4.3/userguide/gradle_daemon.html.
    Daemon will be stopped at the end of the build stopping after processing
    
    > Configure project :benchmarks 
    Gradle now uses separate output directories for each JVM language, but this build assumes a single directory for all classes from a source set. This behaviour has been deprecated and is scheduled to be removed in Gradle 5.0
            at build_uqftuqqq3t8c5r17fjw69ktu.run(/home/xg/elasticsearch-6.1.2/benchmarks/build.gradle:31)
            (Run with --stacktrace to get the full stack trace of this deprecation warning.)
    =======================================
    Elasticsearch Build Hamster says Hello!
    =======================================
      Gradle Version        : 4.3
      OS Info               : Linux 4.9.0-11-amd64 (amd64)
      JDK Version           : Oracle Corporation 1.8.0_201 [Java HotSpot(TM) 64-Bit Server VM 25.201-b09]
      JAVA_HOME             : /home/xg/soft/jdk1.8.0_201
      Random Testing Seed   : 3FDE87BE65FC5A8F
    
    
    BUILD SUCCESSFUL in 16s
    177 actionable tasks: 138 executed, 39 up-to-date
    

    2.3 IDEA 配置

    将项目倒入到IDEA中,通过Run->Edit Configurations->Configuration配置相关参数:

    1. Main class
      org.elasticsearch.bootstrap.Elasticsearch
    2. VM options
      -Des.path.home=/home/xg/file/src/bigdatasrc/elk/es6.1.2
      -Des.path.conf=/home/xg/file/src/bigdatasrc/elk/es6.1.2/config
      -Djava.security.policy=/home/xg/file/src/bigdatasrc/elk/es6.1.2/config/java.policy
      -Dlog4j2.disable.jmx=true
      -Xms1g
      -Xmx1g
      在path.conf目录下新建 java.policy, 并添加如下内容,否则可能出现access denied的错误
      grant {
          permission java.lang.RuntimePermission "createClassLoader";
      };
      
    3. Working directory
      /home/xg/file/src/bigdatasrc/elasticsearch-6.1.2
    4. Use classpath of module
      elasticsearch-6.1.2.core.main
      设置完以上4个参数后,确认即可,以下为配置好的效果:
      在这里插入图片描述
    5. 下载同版本的es 二进制安装包,将config moudles plugins 等3个文件夹拷贝到上述的-Des.path.home目录,也可以使用自己编译好的es安装包,然后解压拷贝对应文件

    2.4 调试输出

    在IDEA 中点击RUN 即开始调试项目,如下输出即正常调试:
    [o.e.n.Node ] [M7K0Dso] started 输出表明节点正常启动了,如下图在这里插入图片描述
    此时可以在浏览器通过127.0.0.1:9200来查看节点信息,如下图:
    es 9200

    3 说明

    注意事项

    由于在生成idea配置、reimport all gradle projects的过程中会下载很多国外源,国内下载很慢,甚至经常失败,因此建议初次生成的时候使用网速较快的外网;
    也可参考手把手教你用idea运行调试Elasticsearch源码 里面的方法修改为国内源;
    或者申请一个按时间计费的阿里云海外服务器,搭建一个open_p_v_n来解决临时需求,网上搭建教程也比较多。

    参考文献

    Elasticsearch 源码解析与优化实战.张超
    手把手教你用idea运行调试Elasticsearch源码

    展开全文
  • 调试segfault 经验总结

    千次阅读 2019-08-12 10:14:55
    最近遇到一个棘手的问题,用在现场的程序崩溃了,但是却无法复现,隔个一个月左右出一次,已经出现了三次,各种测试并没有能复现问题。现在只好把目光聚焦在能够获得的仅有的信息,系统日志上了,查看/var/log/...

    最近遇到一个棘手的问题,用在现场的程序崩溃了,但是却无法复现,隔个一个月左右出一次,已经出现了三次,各种测试并没有能复现问题。现在只好把目光聚焦在能够获得的仅有的信息,系统日志上了,查看/var/log/message,找到了关键的一套信息:

     kernel: myapp[1427]: segfault at 494d1f84 ip 00d73e54 sp b17fac20 error 6 in libThdDllAlg.so[d63000+1e000]

    这条信息太宝贵了,这是唯一能够获得的信息。但是怎么用呢?一头雾水。

    经过查找资料终于有了一点眉目。

    1.myapp是崩溃的程序名,后面中括号中的是PID号,对我没什么用。

    2.后面的at 494d1f84 ip 00d73e54 sp b17fac20 ,at后面是发生段错误时访问的地址,是错误当时的地址,好像对我的调试用处不大,ip后面是指令地址,这个就非常重要了,配合后面库的基地址就可以找到出错的代码了。sp后面的stack pointer栈顶指针,貌似我也没用上。

    3.error后面的6,这个还是比较重要的,但是得到的信息不多,只能得到信息:由于用户态程序写操作访问越界造成的。

    error number是由三个字位组成的,从高到底分别为bit2 bit1和bit0,所以它的取值范围是0~7.
    bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
    bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
    bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址

    4. libThdDllAlg.so[d63000+1e000]这个是崩在了哪个库上,这个非常重要,方框号里第一个是运行时库的基地址,跟ip后面的一块用,用ip后面的值减去基地址就可以得到出错在这个库里的哪个位置了。在这里是00d73e54-d63000=10e54.至于+号后面是什么意思,我还没搞懂。希望以后能补充

    下面知道了出错的库和出错的指令地址,就可以看看是出在了哪条指令上了

    还好这个库是我自己 写的库,不是系统库。用objdump -d libThdDllAlg.so>dumpcode 把文件反汇编写进dumpcode文件。这个libThdDllAlg.so是从现场拷贝回来了,而不是自己重新编译的。

    打开dumpcode文件,找到10e54地址,往上翻能够找到是在哪个函数里,再结合源文件,找到上下文,大概就能知道出错在哪里了。

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    前面讲到了把崩溃点定位到了函数级别,那么怎么找到是那一行代码出了问题呢?

    经过后来的实践,总结了定位到行的方法。

    之前的方法使用的前提是获得的release版程序的崩溃信息,由于时release版,没有调试信息,所以没法直接使用objdump来显示出源代码行号等信息。不过,我们仍然可以重新编译一个debug版本的汇编代码,与release版的反汇编来对照,也可以找到出错代码所在的行。

    debug版objdump使用(引自objdump反汇编用法示例

    -d:将代码段反汇编
    -S:将代码段反汇编的同时,将反汇编代码和源代码交替显示,编译时需要给出-g,即需要调试信息。
    -C:将C++符号名逆向解析。
    -l:反汇编代码中插入源代码的文件名和行号。
    -j section:仅反汇编指定的section。可以有多个-j参数来选择多个section。
     

    怎样通过现有代码生成带有源代码和行号的汇编代码呢?

    1.使用g++ -S -g -fverbose-asm来生成汇编代码,当然可以直接在原有的编译命令基础上增加这几个参数,由于已经定位到了函数,所以可以直接只编译函数所在的cpp文件,将cpp编译为s

    例如:

    g++ -Wall -L./lib -DLINUX -O2 -fPIC -S -g -fverbose-asm -o xxx.s xxx.cpp

    2使用as来查看,当然也可以打印到文件中来与objdump出来的对比

    例如:

    as -alhnd xxx.s>dump.txt

    3.现在我们有了两个汇编版本,一个是release版,也就是实际运行的版本反汇编出来的(以下简称release版),另一个是带调试信息和源代码的(以下简称debug版)。下面就是对比这两个文件了。

    首先找到release版中崩溃发生的代码,从上下寻找特征代码,一般可以找特征数字

    例如

       274da:    0f b7 4f 06              movzwl 0x6(%edi),%ecx
       274de:    0f b7 c0                 movzwl %ax,%eax
       274e1:    0f b7 57 02              movzwl 0x2(%edi),%edx
       274e5:    89 85 38 fe ff ff        mov    %eax,-0x1c8(%ebp)
       274eb:    66 89 8d 28 fe ff ff     mov    %cx,-0x1d8(%ebp)
       274f2:    89 95 30 fe ff ff        mov    %edx,-0x1d0(%ebp)
       274f8:    0f b7 85 28 fe ff ff     movzwl -0x1d8(%ebp),%eax
       274ff:    8b 8d 30 fe ff ff        mov    -0x1d0(%ebp),%ecx
       27505:    8b 95 10 fe ff ff        mov    -0x1f0(%ebp),%edx
       2750b:    89 44 24 10              mov    %eax,0x10(%esp)
       2750f:    8b 85 38 fe ff ff        mov    -0x1c8(%ebp),%eax
       27515:    89 4c 24 0c              mov    %ecx,0xc(%esp)
       27519:    89 44 24 08              mov    %eax,0x8(%esp)
       2751d:    e9 2c ff ff ff           jmp    2744e <_ZN9SlClass3RunEtt+0xdde>
       27522:    8d b6 00 00 00 00        lea    0x0(%esi),%esi
       27528:    8b 95 34 fe ff ff        mov    -0x1cc(%ebp),%edx
       2752e:    0f b7 c0                 movzwl %ax,%eax
       27531:    89 85 30 fe ff ff        mov    %eax,-0x1d0(%ebp)
       27537:    8b 42 04                 mov    0x4(%edx),%eax
       2753a:    8b 95 30 fe ff ff        mov    -0x1d0(%ebp),%edx
       27540:    8b 04 90                 mov    (%eax,%edx,4),%eax
       27543:    85 c0                    test   %eax,%eax
       27545:    0f 84 99 02 00 00        je     277e4 <_ZN9SlClass3RunEtt+0x1174>
       2754b:    0f b7 57 02              movzwl 0x2(%edi),%edx
       2754f:    3b 50 0c                 cmp    0xc(%eax),%edx
       27552:    89 95 04 fe ff ff        mov    %edx,-0x1fc(%ebp)
       27558:    0f 83 6a 01 00 00        jae    276c8 <_ZN9SlClass3RunEtt+0x1058>
       2755e:    8b 40 08                 mov    0x8(%eax),%eax
       27561:    8b 95 04 fe ff ff        mov    -0x1fc(%ebp),%edx
       27567:    8b 04 90                 mov    (%eax,%edx,4),%eax
       2756a:    85 c0                    test   %eax,%eax
       2756c:    89 85 28 fe ff ff        mov    %eax,-0x1d8(%ebp)
       27572:    0f 84 50 01 00 00        je     276c8 <_ZN9SlClass3RunEtt+0x1058>
       27578:    8b 95 28 fe ff ff        mov    -0x1d8(%ebp),%edx
       2757e:    0f b7 47 06              movzwl 0x6(%edi),%eax
       27582:    66 3b 42 06              cmp    0x6(%edx),%ax

    这是我的relase版汇编代码,程序崩溃在27582行,我找的特征代码是274e5行,之所以选这个,是因为后面连续的几个代码都带有不同的数字,这个重复的概率就比较小了。这里有个地方要注意,这里是16进制,debug版文件里是10进制,需要转换一下。

    -0x1c8转为-456,直接在debug版中搜索-456,找到movl    %eax, -456,再搜索%eax, -456,还好,只搜到4处,然后结合下一行代码,可以定位到是哪一个。看看上下文,就定位到了源文件所在的行。

    -----------------------------------------------------------------------------------------------

    引用以下文章

    1.一次segfault错误的排查过程,引用地址https://blog.csdn.net/zhaohaijie600/article/details/45246569

                                                                                                     一次segfault错误的排查过程

    正常运行了几年的程序忽然崩溃了,由于机器没有设置CORE文件,无法从CORE中取得错误信息,程序运行在centOS 7上, 本来对centOS用的也是不熟,只能边查资料边查问题。

    首先、我需要确认程序是否真的崩溃了,还是别人误操作关闭了。如果程序真的崩溃了,会在系统中留下痕迹,我查了一下,在messages文件中发现了一条信息:

    xxxxx.o[2374]: segfault at7f0ed0bfbf70 ip 00007f0edd646fe7 sp 00007f0ed3603978 error 4 inlibc-2.17.so[7f0edd514000+1b6000]

    由上面信息看出,系统确实是崩溃了,发生了段错误。

    查看messages需要root权限,用命令:cat /var/log/messages 就可以了,还有一个命令dmesg也可以查到上面的信息。

    从上面的信息,我们可以得到以下信息:

    1、从libc-2.17.so[7f0edd514000+1b6000]可以看出错误发生在libc上,libc在此程序中映射的内存基址为7f0edd514000,这个信息是个坏消息,这个so上的东西太多了;

    2、segfault at和error 4这两条信息可以得出是内存读出错,4的意义如下,可以对照参考:

    bit2:值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
    bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
    bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址

    4正好为用户态内存读操作访问出界。

    3、7f0ed0bfbf70,00007f0edd646fe7,00007f0ed3603978这三个值:第一个值为出错的地址,用处不大;第二个值为发生错误时指令的地址,这个值在有些错误时是错误的,下面会讲一下,第三个值为堆栈指针。

    除了以上信息,就是六七万行的代码。感觉没有太大的指望。

    C++段错误就几类,读写错误,这个主要是参数没有控制好,这种错误比较常见,我们经常把NULL指针、未初始化或非法值的指针传递给函数,从而引出此错误;指令地址出错,这类错误主要是由虚函数,回调函数引起,最常出现的是虚函数,由于虚函数保存在类变量中,如果不小心用了非安全函数,就可能把虚数指针覆盖掉,从而影响出现错误。但指令地址出错的情况相对参数出错来讲还是要少很多的,因为用到此功能的还是需要一定的水平的,不容易犯一些低级错误。

    从上面分析的第二点来看,基本上属于读写错误,但从六七万行代码找出问题,可能性不大,只能缩小范围,我决定从上面提到的三点,找到出错的函数,然后再从代码中找出所有出错函数调用的地方来定位问题。由于错误指出出错的组件为libc,而且基本上是参数出现,所以发现错误的指令地址应该是可信的,我们可以根据指令地址查出是哪个函数。指令地址为:00007f0edd646fe7 ,libc指令的基地址为:7f0edd514000,可以根据这两个值计算一下该指令的相对地址为132FE7,下面我们需要找到相对代码段地址为132FE7的地方为什么函数。

    开始我想得到反汇编代码,但这个组件代码太多,看不到头,于是我找了个取巧的办法,查看导出函数和基地址,结果所以还是很多,我就用132和133进行了一下过滤,得出以下信息

    [root@localhostlib64]# objdump -tT libc-2.17.so | grep 132

    000000000008284fl     F .text  000000000000001b              _L_unlock_1325

    0000000000082ebfl     F .text  000000000000001c              _L_lock_11322

    000000000010b952l     F .text  000000000000001b              _L_unlock_132

    000000000010ce62l     F .text  000000000000001b              _L_unlock_132

    00000000001132e0l     F .text  00000000000001cf              ruserok2_sa

    00000000000f1320l     F .text  00000000000001ce              __ecvt_r

    00000000000bf370l     F .text  0000000000000132              __statfs_link_max

    0000000000132080l     F .text  0000000000000068              __nss_gshadow_lookup

    0000000000132f50l     F .text  0000000000000fd9              __strncmp_sse42

    00000000001320f0l     F .text  00000000000000a5              __strchr_sse42

    0000000000132020l     F .text  000000000000005e              __nss_aliases_lookup

    00000000001321a0l     F .text  0000000000000da9              __strcmp_sse42

    00000000001153b0g     F .text  0000000000000132              setnetgrent

    00000000000f1320g     F .text  00000000000001ce              ecvt_r

    0000000000112b50g     F .text  0000000000000132              ether_ntohost

    00000000000f1320g    DF .text  00000000000001ce  GLIBC_2.2.5 ecvt_r

    0000000000112b50g    DF .text  0000000000000132  GLIBC_2.2.5 ether_ntohost

    00000000001153b0g    DF .text  0000000000000132  GLIBC_2.2.5 setnetgrent

    [root@localhostlib64]# objdump -tT libc-2.17.so | grep 133

    000000000006e3cal     F .text  000000000000001b              _L_unlock_133

    0000000000075055l     F .text  0000000000000018              _L_unlock_133

    000000000008286al     F .text  000000000000001f              _L_unlock_1335

    000000000008305al     F .text  000000000000001b              _L_lock_13385

    0000000000133f30l     F .text  000000000000019a              __strrchr_sse42

    注意,我标红的部分,132f50和132fe7很接近,很大可能是这个函数出现,而且又是读地址非法,这个函数有可能会出错这个问题,__strncmp_sse42这个函数是被strncmp调用的,看到这个函数基本上可以确定应该是这个函数惹得祸。

    我又写了两行代码确认了一下

    strncmp(0,“1234”, 5);

    strncmp(“1234”,0, 5);

    分别编绎成两个应用运行,出错,messages中的错误信息如下:

    Apr23 01:38:03 localhost kernel: a.out[3254]: segfault at 0 ip 00007f58a5386f7c sp00007fffb3de5d18 error 4 in libc-2.17.so[7f58a5254000+1b6000]

    Apr23 01:39:34 localhost kernel: a.out[3267]: segfault at 0 ip 00007f8bb1908f80 sp00007fff61695408 error 4 in libc-2.17.so[7f8bb17d6000+1b6000]

    计算了一下,出错的相对地址为:132F80和132F7C,和我们遇到的错误地址很接近,于是,把__strncmp_sse42的汇编代码打印了部分如下:

    Dump of assemblercode for function __strncmp_sse42:

       0x00007ffff732ef50 <+0>: test   %rdx,%rdx

       0x00007ffff732ef53 <+3>: je     0x7ffff732ff14<__strncmp_sse42+4036>

       0x00007ffff732ef59 <+9>: cmp    $0x1,%rdx

       0x00007ffff732ef5d <+13>: je     0x7ffff732ff20<__strncmp_sse42+4048>

       0x00007ffff732ef63 <+19>: mov    %rdx,%r11

       0x00007ffff732ef66 <+22>: mov    %esi,%ecx

       0x00007ffff732ef68 <+24>: mov    %edi,%eax

       0x00007ffff732ef6a <+26>: and    $0x3f,%rcx

       0x00007ffff732ef6e <+30>: and    $0x3f,%rax

       0x00007ffff732ef72 <+34>: cmp    $0x30,%ecx

       0x00007ffff732ef75 <+37>: ja     0x7ffff732efc0 <__strncmp_sse42+112>

       0x00007ffff732ef77 <+39>: cmp    $0x30,%eax

       0x00007ffff732ef7a <+42>: ja     0x7ffff732efc0 <__strncmp_sse42+112>

               0x00007ffff732ef7c <+44>: movdqu(%rdi),%xmm1

               0x00007ffff732ef80 <+48>:movdqu (%rsi),%xmm2

       0x00007ffff732ef84 <+52>: pxor   %xmm0,%xmm0

       0x00007ffff732ef88 <+56>: pcmpeqb%xmm1,%xmm0

       0x00007ffff732ef8c <+60>: pcmpeqb%xmm2,%xmm1

       0x00007ffff732ef90 <+64>: psubb  %xmm0,%xmm1

       0x00007ffff732ef94 <+68>: pmovmskb%xmm1,%edx

       0x00007ffff732ef98 <+72>: sub    $0xffff,%edx

       0x00007ffff732ef9e <+78>: jne    0x7ffff732ff00 <__strncmp_sse42+4016>

       0x00007ffff732efa4 <+84>: sub    $0x10,%r11

       0x00007ffff732efa8 <+88>: jbe    0x7ffff732ff14 <__strncmp_sse42+4036>

       0x00007ffff732efae <+94>: add    $0x10,%rsi

       0x00007ffff732efb2 <+98>: add    $0x10,%rdi

       0x00007ffff732efb6 <+102>: nopw   %cs:0x0(%rax,%rax,1)

       0x00007ffff732efc0 <+112>: and    $0xfffffffffffffff0,%rsi

       0x00007ffff732efc4 <+116>: and    $0xfffffffffffffff0,%rdi

       0x00007ffff732efc8 <+120>: mov    $0xffff,%edx

       0x00007ffff732efcd <+125>: xor    %r8d,%r8d

       0x00007ffff732efd0 <+128>: and    $0xf,%ecx

       0x00007ffff732efd3 <+131>: and    $0xf,%eax

       0x00007ffff732efd6 <+134>: pxor   %xmm0,%xmm0

       0x00007ffff732efda <+138>: cmp    %eax,%ecx

       0x00007ffff732efdc <+140>: je     0x7ffff732f010 <__strncmp_sse42+192>

       0x00007ffff732efde <+142>: ja     0x7ffff732efe7 <__strncmp_sse42+151>

       0x00007ffff732efe0 <+144>: mov    %edx,%r8d

       0x00007ffff732efe3 <+147>: xchg   %eax,%ecx

       0x00007ffff732efe4 <+148>: xchg   %rsi,%rdi

           0x00007ffff732efe7<+151>: movdqa (%rdi),%xmm2

           0x00007ffff732efeb <+155>: movdqa(%rsi),%xmm1

       0x00007ffff732efef <+159>: lea    0xf(%rax),%r9

       0x00007ffff732eff3 <+163>: sub    %rcx,%r9

       0x00007ffff732eff6 <+166>: lea    0x4d4c3(%rip),%r10

    红色部分为我自己写的测试程序出错的地址,

    绿色部分为所要查的程序出错的地址,从这部分可以看到,出错的参数为strncmp的第二个参数。

    四、多线程

    由于用UE对源代码进行查找,还好只有335处调用,对第二个参数为常量和不被调用的代码再排除,只有20多处可疑。

    现在需要再分析一下,第二个参数读非法,那么变量如果在栈中话,需要访问到栈外的空间,这样,如果是第二个参数为栈变量的话,第三个参数值应该会很大。如果在堆变量,情况就比较复杂了,由于第三个参数值都很少,最大的为128,所以又排除了栈变量出错的可能性,从上面的数据来看,出错的地址比栈小了很多,也证明了不是栈变量出错。最后只剩下8处,我对这8处仔细查了一下,感觉都没有问题,参数控制,变量长度,控制得都没有问题。

    如果代码上没有问题,那么问题就比较难查了,我再进行分析一下,函数用户和变量上表面上没有问题,那么就可能出现几种可能:变量指针覆盖,内存移动。变量指针覆盖在实际中出现的概率比较大,往往使用了strcpy和memcpy之类的函数,没有进行边界值检查,把一些指针的值覆盖了,对于这种情况,我对代码进行了检查,可能性很小,而且上面给出的出错的参数值不像随意覆盖的值。如果这种情况可能性很小,对于一个变量只在单个线程被访问的情况出错的可能性也很小,于是,我又排除了6处。

    剩下的两处代码在一起的,参数为一个类的内部变量,这个类可能会被多个线程访问,所以此此出现的可能性很大,我仔细看了一下,边界检查也做了,线程互斥访问控制也进行了处理,没有明显的问题,还好用到这个变量的只有一个文件,我对整个文件对这个变量进行搜索,发现了一个函数realloc。感觉可能是这个函数导致的问题,此变量存放的是一个数组,数组会不断增长,当空间不够时,就用realloc再重申请,看到这个函数后,心中一阵激动,感觉问题就在这儿,我把这几段代码仔细看了几遍,访问控制,锁住修改,动态申请,最终发现了一个问题,在使用realloc时,临界区没有保护好。

    事情似乎比较明朗了,在一个线程对这个变量指针进行访问时(即用strnmcp处),线程切换到另一个线程对这个变量指针进行了realloc操作,realloc重新申请了新的空间,把老的数据移动的新的空间,然后把旧空间处的内存彻底释放掉了,然后又切换到原先的线程,执行strncmp函数,这个函数用的指针参数还是旧的空间地址,而旧的空间已经被释放了,所以出现了访问非法的错误。

    我查了一下程序日志,发现出现错误时,正好需要重新申请空间,应该是这个问题导致的。

    这种情况发生的概率很低,很难重现,因为realloc和strncmp函数执行时间都很短,而且realloc的概率不高,所以运行了4,5年才出现错误,但是总体来讲,还是比较幸运的,如果旧的空间没有被释放,那么接下来的各种操作全在旧的空间上,可能会导致更大的损失。

    ———赵海杰

    20150424
    ---------------------
    版权声明:本文为CSDN博主「zhaohaijie600」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhaohaijie600/article/details/45246569

    2.Linux环境下段错误的产生原因及调试方法小结

    引用地址https://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。

    1. 段错误是什么

    一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。这里贴一个对于“段错误”的准确定义(参考Answers.com):

    复制代码

    A segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors.
    
    Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.
    
    On Unix-like operating systems, a process that accesses invalid memory receives the SIGSEGV signal. On Microsoft Windows, a process that accesses invalid memory receives the STATUS_ACCESS_VIOLATION exception.

    复制代码

    2. 段错误产生的原因

    2.1 访问不存在的内存地址

    复制代码

    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
            int *ptr = NULL;
            *ptr = 0;
    }

    复制代码

    2.2 访问系统保护的内存地址

    复制代码

    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
            int *ptr = (int *)0;
            *ptr = 100;
    }

    复制代码

    2.3 访问只读的内存地址

    复制代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    void main()
    {
            char *ptr = "test";
            strcpy(ptr, "TEST");
    }

    复制代码

    2.4 栈溢出

    复制代码

    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
            main();
    }

    复制代码

    等等其他原因。

    3. 段错误信息的获取

    程序发生段错误时,提示信息很少,下面有几种查看段错误的发生信息的途径。

    3.1 dmesg

    dmesg可以在应用程序crash掉时,显示内核中保存的相关信息。如下所示,通过dmesg命令可以查看发生段错误的程序名称、引起段错误发生的内存地址、指令指针地址、堆栈指针地址、错误代码、错误原因等。以程序2.3为例:

    panfeng@ubuntu:~/segfault$ dmesg
    [ 2329.479037] segfault3[2700]: segfault at 80484e0 ip 00d2906a sp bfbbec3c error 7 in libc-2.10.1.so[cb4000+13e000]

    3.2 -g

    使用gcc编译程序的源码时,加上-g参数,这样可以使得生成的二进制文件中加入可以用于gdb调试的有用信息。以程序2.3为例:

    panfeng@ubuntu:~/segfault$ gcc -g -o segfault3 segfault3.c

    3.3 nm

    使用nm命令列出二进制文件中的符号表,包括符号地址、符号类型、符号名等,这样可以帮助定位在哪里发生了段错误。以程序2.3为例:

    复制代码

    panfeng@ubuntu:~/segfault$ nm segfault3
    08049f20 d _DYNAMIC
    08049ff4 d _GLOBAL_OFFSET_TABLE_
    080484dc R _IO_stdin_used
             w _Jv_RegisterClasses
    08049f10 d __CTOR_END__
    08049f0c d __CTOR_LIST__
    08049f18 D __DTOR_END__
    08049f14 d __DTOR_LIST__
    080484ec r __FRAME_END__
    08049f1c d __JCR_END__
    08049f1c d __JCR_LIST__
    0804a014 A __bss_start
    0804a00c D __data_start
    08048490 t __do_global_ctors_aux
    08048360 t __do_global_dtors_aux
    0804a010 D __dso_handle
             w __gmon_start__
    0804848a T __i686.get_pc_thunk.bx
    08049f0c d __init_array_end
    08049f0c d __init_array_start
    08048420 T __libc_csu_fini
    08048430 T __libc_csu_init
             U __libc_start_main@@GLIBC_2.0
    0804a014 A _edata
    0804a01c A _end
    080484bc T _fini
    080484d8 R _fp_hw
    080482bc T _init
    08048330 T _start
    0804a014 b completed.6990
    0804a00c W data_start
    0804a018 b dtor_idx.6992
    080483c0 t frame_dummy
    080483e4 T main
             U memcpy@@GLIBC_2.0

    复制代码

    3.4 ldd

    使用ldd命令查看二进制程序的共享链接库依赖,包括库的名称、起始地址,这样可以确定段错误到底是发生在了自己的程序中还是依赖的共享库中。以程序2.3为例:

    panfeng@ubuntu:~/segfault$ ldd ./segfault3
        linux-gate.so.1 =>  (0x00e08000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00675000)
        /lib/ld-linux.so.2 (0x00482000)

    4. 段错误的调试方法

    4.1 使用printf输出信息

    这个是看似最简单但往往很多情况下十分有效的调试方式,也许可以说是程序员用的最多的调试方式。简单来说,就是在程序的重要代码附近加上像printf这类输出信息,这样可以跟踪并打印出段错误在代码中可能出现的位置。

    为了方便使用这种方法,可以使用条件编译指令#ifdef DEBUG和#endif把printf函数包起来。这样在程序编译时,如果加上-DDEBUG参数就能查看调试信息;否则不加该参数就不会显示调试信息。

    4.2 使用gcc和gdb

    4.2.1 调试步骤

     1、为了能够使用gdb调试程序,在编译阶段加上-g参数,以程序2.3为例:

    panfeng@ubuntu:~/segfault$ gcc -g -o segfault3 segfault3.c

    2、使用gdb命令调试程序:

    复制代码

    panfeng@ubuntu:~/segfault$ gdb ./segfault3 
    GNU gdb (GDB) 7.0-ubuntu
    Copyright (C) 2009 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i486-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /home/panfeng/segfault/segfault3...done.
    (gdb) 

    复制代码

    3、进入gdb后,运行程序:

    复制代码

    (gdb) run
    Starting program: /home/panfeng/segfault/segfault3 
    
    Program received signal SIGSEGV, Segmentation fault.
    0x001a306a in memcpy () from /lib/tls/i686/cmov/libc.so.6
    (gdb) 

    复制代码

    从输出看出,程序2.3收到SIGSEGV信号,触发段错误,并提示地址0x001a306a、调用memcpy报的错,位于/lib/tls/i686/cmov/libc.so.6库中。

    4、完成调试后,输入quit命令退出gdb:

    复制代码

    (gdb) quit
    A debugging session is active.
    
        Inferior 1 [process 3207] will be killed.
    
    Quit anyway? (y or n) y

    复制代码

    4.2.2 适用场景

    1、仅当能确定程序一定会发生段错误的情况下使用。

    2、当程序的源码可以获得的情况下,使用-g参数编译程序。

    3、一般用于测试阶段,生产环境下gdb会有副作用:使程序运行减慢,运行不够稳定,等等。

    4、即使在测试阶段,如果程序过于复杂,gdb也不能处理。

    4.3 使用core文件和gdb

    在4.2节中提到段错误会触发SIGSEGV信号,通过man 7 signal,可以看到SIGSEGV默认的handler会打印段错误出错信息,并产生core文件,由此我们可以借助于程序异常退出时生成的core文件中的调试信息,使用gdb工具来调试程序中的段错误。

    4.3.1 调试步骤

    1、在一些Linux版本下,默认是不产生core文件的,首先可以查看一下系统core文件的大小限制:

    panfeng@ubuntu:~/segfault$ ulimit -c
    0

    2、可以看到默认设置情况下,本机Linux环境下发生段错误时不会自动生成core文件,下面设置下core文件的大小限制(单位为KB):

    panfeng@ubuntu:~/segfault$ ulimit -c 1024
    panfeng@ubuntu:~/segfault$ ulimit -c
    1024

    3、运行程序2.3,发生段错误生成core文件:

    panfeng@ubuntu:~/segfault$ ./segfault3
    段错误 (core dumped)

    4、加载core文件,使用gdb工具进行调试:

    复制代码

    panfeng@ubuntu:~/segfault$ gdb ./segfault3 ./core 
    GNU gdb (GDB) 7.0-ubuntu
    Copyright (C) 2009 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i486-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /home/panfeng/segfault/segfault3...done.
    
    warning: Can't read pathname for load map: 输入/输出错误.
    Reading symbols from /lib/tls/i686/cmov/libc.so.6...(no debugging symbols found)...done.
    Loaded symbols for /lib/tls/i686/cmov/libc.so.6
    Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
    Loaded symbols for /lib/ld-linux.so.2
    Core was generated by `./segfault3'.
    Program terminated with signal 11, Segmentation fault.
    #0  0x0018506a in memcpy () from /lib/tls/i686/cmov/libc.6

    复制代码

    从输出看出,同4.2.1中一样的段错误信息。

    5、完成调试后,输入quit命令退出gdb:

    (gdb) quit

    4.3.2 适用场景

    1、适合于在实际生成环境下调试程序的段错误(即在不用重新发生段错误的情况下重现段错误)。

    2、当程序很复杂,core文件相当大时,该方法不可用。

    4.4 使用objdump

    4.4.1 调试步骤

    1、使用dmesg命令,找到最近发生的段错误输出信息:

    panfeng@ubuntu:~/segfault$ dmesg
    ... ...
    [17257.502808] segfault3[3320]: segfault at 80484e0 ip 0018506a sp bfc1cd6c error 7 in libc-2.10.1.so[110000+13e000]

    其中,对我们接下来的调试过程有用的是发生段错误的地址:80484e0和指令指针地址:0018506a。

    2、使用objdump生成二进制的相关信息,重定向到文件中:

    panfeng@ubuntu:~/segfault$ objdump -d ./segfault3 > segfault3Dump

    其中,生成的segfault3Dump文件中包含了二进制文件的segfault3的汇编代码。

    3、在segfault3Dump文件中查找发生段错误的地址:

    复制代码

    panfeng@ubuntu:~/segfault$ grep -n -A 10 -B 10 "80484e0" ./segfault3Dump 
    121- 80483df:    ff d0                    call   *%eax
    122- 80483e1:    c9                       leave  
    123- 80483e2:    c3                       ret    
    124- 80483e3:    90                       nop
    125-
    126-080483e4 <main>:
    127- 80483e4:    55                       push   %ebp
    128- 80483e5:    89 e5                    mov    %esp,%ebp
    129- 80483e7:    83 e4 f0                 and    $0xfffffff0,%esp
    130- 80483ea:    83 ec 20                 sub    $0x20,%esp
    131: 80483ed:    c7 44 24 1c e0 84 04     movl   $0x80484e0,0x1c(%esp)
    132- 80483f4:    08 
    133- 80483f5:    b8 e5 84 04 08           mov    $0x80484e5,%eax
    134- 80483fa:    c7 44 24 08 05 00 00     movl   $0x5,0x8(%esp)
    135- 8048401:    00 
    136- 8048402:    89 44 24 04              mov    %eax,0x4(%esp)
    137- 8048406:    8b 44 24 1c              mov    0x1c(%esp),%eax
    138- 804840a:    89 04 24                 mov    %eax,(%esp)
    139- 804840d:    e8 0a ff ff ff           call   804831c <memcpy@plt>
    140- 8048412:    c9                       leave  
    141- 8048413:    c3                       ret    

    复制代码

    通过对以上汇编代码分析,得知段错误发生main函数,对应的汇编指令是movl $0x80484e0,0x1c(%esp),接下来打开程序的源码,找到汇编指令对应的源码,也就定位到段错误了。

    4.4.2 适用场景

    1、不需要-g参数编译,不需要借助于core文件,但需要有一定的汇编语言基础。

    2、如果使用了gcc编译优化参数(-O1,-O2,-O3)的话,生成的汇编指令将会被优化,使得调试过程有些难度。

    4.5 使用catchsegv

    catchsegv命令专门用来扑获段错误,它通过动态加载器(ld-linux.so)的预加载机制(PRELOAD)把一个事先写好的库(/lib/libSegFault.so)加载上,用于捕捉断错误的出错信息。

    复制代码

    panfeng@ubuntu:~/segfault$ catchsegv ./segfault3
    Segmentation fault (core dumped)
    *** Segmentation fault
    Register dump:
    
     EAX: 00000000   EBX: 00fb3ff4   ECX: 00000002   EDX: 00000000
     ESI: 080484e5   EDI: 080484e0   EBP: bfb7ad38   ESP: bfb7ad0c
    
     EIP: 00ee806a   EFLAGS: 00010203
    
     CS: 0073   DS: 007b   ES: 007b   FS: 0000   GS: 0033   SS: 007b
    
     Trap: 0000000e   Error: 00000007   OldMask: 00000000
     ESP/signal: bfb7ad0c   CR2: 080484e0
    
    Backtrace:
    /lib/libSegFault.so[0x3b606f]
    ??:0(??)[0xc76400]
    /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xe89b56]
    /build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start.S:122(_start)[0x8048351]
    
    Memory map:
    
    00258000-00273000 r-xp 00000000 08:01 157 /lib/ld-2.10.1.so
    00273000-00274000 r--p 0001a000 08:01 157 /lib/ld-2.10.1.so
    00274000-00275000 rw-p 0001b000 08:01 157 /lib/ld-2.10.1.so
    003b4000-003b7000 r-xp 00000000 08:01 13105 /lib/libSegFault.so
    003b7000-003b8000 r--p 00002000 08:01 13105 /lib/libSegFault.so
    003b8000-003b9000 rw-p 00003000 08:01 13105 /lib/libSegFault.so
    00c76000-00c77000 r-xp 00000000 00:00 0 [vdso]
    00e0d000-00e29000 r-xp 00000000 08:01 4817 /lib/libgcc_s.so.1
    00e29000-00e2a000 r--p 0001b000 08:01 4817 /lib/libgcc_s.so.1
    00e2a000-00e2b000 rw-p 0001c000 08:01 4817 /lib/libgcc_s.so.1
    00e73000-00fb1000 r-xp 00000000 08:01 1800 /lib/tls/i686/cmov/libc-2.10.1.so
    00fb1000-00fb2000 ---p 0013e000 08:01 1800 /lib/tls/i686/cmov/libc-2.10.1.so
    00fb2000-00fb4000 r--p 0013e000 08:01 1800 /lib/tls/i686/cmov/libc-2.10.1.so
    00fb4000-00fb5000 rw-p 00140000 08:01 1800 /lib/tls/i686/cmov/libc-2.10.1.so
    00fb5000-00fb8000 rw-p 00000000 00:00 0
    08048000-08049000 r-xp 00000000 08:01 303895 /home/panfeng/segfault/segfault3
    08049000-0804a000 r--p 00000000 08:01 303895 /home/panfeng/segfault/segfault3
    0804a000-0804b000 rw-p 00001000 08:01 303895 /home/panfeng/segfault/segfault3
    09432000-09457000 rw-p 00000000 00:00 0 [heap]
    b78cf000-b78d1000 rw-p 00000000 00:00 0
    b78df000-b78e1000 rw-p 00000000 00:00 0
    bfb67000-bfb7c000 rw-p 00000000 00:00 0 [stack]

    复制代码

    5. 一些注意事项

    1、出现段错误时,首先应该想到段错误的定义,从它出发考虑引发错误的原因。

    2、在使用指针时,定义了指针后记得初始化指针,在使用的时候记得判断是否为NULL。

    3、在使用数组时,注意数组是否被初始化,数组下标是否越界,数组元素是否存在等。

    4、在访问变量时,注意变量所占地址空间是否已经被程序释放掉。

    5、在处理变量时,注意变量的格式控制是否合理等。

    6. 参考资料列表

    1、http://www.docin.com/p-105923877.html

    2、http://blog.chinaunix.net/space.php?uid=317451&do=blog&id=92412

    展开全文
  • Linux命令大全

    千次阅读 2019-07-26 14:33:35
    文章来源:https://www.cnblogs.com/ultranms/p/9843267.html 1 文件{ ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt touch file # 创建空白文件 rm -rf 目录名 ...
  • 1 文件{ls -rtl # 按时间倒叙列出所有目录和文件 ll -rttouch file # 创建空白文件rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制)dos2unix # windows文本转linux文本unix2dos # linux文本转windows文本...
  • 阿里云 干货!一篇文章集合所有Linux基础命令,适合所有菜鸟学习和老手回顾! 1 文件{ls -rtl # 按时间倒叙列出所有目录和文件 ll -rttouch file # 创建空白文件rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f...
  • shell实例手册

    2018-02-04 16:17:19
    shell实例手册 1 文件{ ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt touch file # 创建空白文件 rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制) dos2unix # windows文本转linux文本 ...
  • 命令汇总

    2017-09-23 09:33:00
    1 文件{ ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt touch file # 创建空白文件 rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制) dos2unix # windows文本转linux文本 u...
  • 高CPU调试(二)

    2016-12-06 16:48:31
    发现到String.Concat就没了,从代码猜测,可能是程序在做字符串拼接,申请内存不到,所以才会触发强烈的GC操作。我们来看看该线程上的内存分配: 0:083> !dso OS Thread Id: 0x6914 (83) RSP/REG Object Name ...
  • linux最全的命令大全,shell运维手册

    千次阅读 2017-07-16 23:19:55
    1 文件{    ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt  touch file # 创建空白文件  rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制)  dos2unix # windows文本转linu
  • 4004c9: 48 83 ec 38 sub $0x38,%rsp : 为函数局部变量申请0x38空间,把栈顶下移0x38位置 4004cd: 89 7d dc mov %edi,-0x24(%rbp) : 提取参数a存入栈基向下0x24位置 4004d0: 89 75 d8 mov %esi,-0x28(%rbp) : ...
  • httpd配置

    千次阅读 2018-05-22 14:00:58
    一、初识httpd ...被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。 ...    1、httpd的特性 ... ⑴高度模块化:core + ... ⑵DSO:Dynamic Shared Object,httpd支持动态装卸载模块  ...
  • Apache详解(三)Httpd常见配置

    千次阅读 2020-07-06 23:11:05
    3 httpd 常见配置 3.1 指定服务器名 3.2 显示服务器版本信息 3.2 包含其它配置文件 3.3 监听的IP和Port 3.4 持久连接 3.5 DSO (Dynamic Shared Object) 3.6 MPM (Multi-Processing Module) 多路处理模块 3.7 ...
  • 红旗Linux中文教程

    万次阅读 2012-12-11 21:05:54
    是一套免费使用和自由传播的类 UNIX 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 UNIX 工具软件、应用程序和网络协议。这个系统是由全世界各地的...
  • “软件安全工程师(Software Security Engineer)”——我申请的是这样一个职位,面试时候他们问了我一些低级的问题,有些我能答上来,还有些却不行。 然后他们给我发了一封邮件,其中包含了一个加密的程序...
  • KVM源代码分析

    千次阅读 2016-08-01 16:44:42
    上图是一个执行过程图,首先启动一个虚拟化管理软件qemu,开始启动一个虚拟机,通过ioctl等系统调用向内核中申请指定的资源,搭建好虚拟环境,启动虚拟机内的OS,执行 VMLAUCH 指令,即进入了guest代码执行过程。...
  • 软件破解尝试

    2016-07-05 17:07:07
    “软件安全工程师(Software Security Engineer)”——我申请的是这样一个职位,面试时候他们问了我一些低级的问题,有些我能答上来,还有些却不行。 然后他们给我发了一封邮件,其中包含了一个加密的程序...
  • 面试官在面试时让我去破解一个软件,我成功了 最近我在面试中被要求破解一个程序,并且成功拿到了工作。...“软件安全工程师(Software Security Engineer)”——我申请的是这样一个职位,面试时候他们问了我一
  • x264 代码重点详解 详细分析

    万次阅读 2013-09-12 16:19:06
    eg mplayer x264 代码重点详解 详细分析 分类: ffmpeg 2012-02-06 09:19 4229人阅读 评论(1) 收藏 举报 h.264codecflv优化initializationinteger 目录(?)[+] ffmpeg和mplayer中求平均值得...#def
  • ffmpeg和mplayer中求平均值得方法 1 ordinary c language level #define avg2(a,b) ((a+b+1)&gt;&gt;1) #define avg4(a,b,c,d) ((a+b+c+d+2)&...显而易见...,注意a,b宏表达式可能引出的副作用 ...
  •     最近我在面试中被要求破解一个程序,并且成功拿到了工作。 大家好,开了一个新博客我真是非常激动呐,于是我计划每周...“软件安全工程师(Software Security Engineer)”——我申请的是这样一个职位,面...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

dso138免费申请