Opened 12 years ago

Closed 12 years ago

#1180 closed defect (fixed)

h_mgr crashes with "Not enough memory"

Reported by: historic_bruno Owned by:
Priority: Must Have Milestone: Alpha 11
Component: Core engine Keywords: h_mgr
Cc: Jan Wassenberg, philip Patch:

Description

Build: r11165 Visual C++ 2010 EE
OS: Windows 7 Pro 64-bit

To reproduce:

  • Start Atlas
  • Open Combat demo (huge) map
  • Start simulation test
  • Send armies rushing into each other
  • Wait a few minutes
  • Crash!

I understand this happens on other maps as well and seems to be triggered by sounds during battle.

Full error message:

Function call failed: return value was -100033 (Not enough memory)
Location: h_mgr.cpp:464 (alloc_new_handle)

Call stack:

alloc_new_handle (h_mgr.cpp:464)
    type = 0x01A2FA80 -> 
        init = 0x01466760 -> (VSrc_init)
        reload = 0x014667F0 -> (VSrc_reload)
        dtor = 0x01466780 -> (VSrc_dtor)
        validate = 0x01466D60 -> (VSrc_validate)
        to_string = 0x01466F70 -> (VSrc_to_string)
        user_size = 80 (0x00000050)
        name = 0x019000C4 -> "VSrc"

    vfs = 0x01A31908 -> 
        px = 0x00611858 -> (IVFS)
        pn = 
            pi_ = 0x005F8E90 -> 
                use_count_ = 6 (0x00000006)
                weak_count_ = 1 (0x00000001)



    pathname = 0x048FF2BC -> 
        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        separator = [8] { 47 ('/'), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized) }

    key = 1061576240 (0x3F465E30)
    flags = 17 (0x00000011)
    init_args = 0x048FF208 -> 0x048FF25C -> [8] { 68 ('D'), 243, 143, 4, 230, 47 ('/'), 24, 1 }
    hd = 0x00000000
    err = (uninitialized)
    idx = (uninitialized)
    tag = (uninitialized)
    h = (uninitialized)

h_alloc (h_mgr.cpp:536)
    type = 0x01A2FA80 (see above)
    vfs = 0x01A31908 (see above)
    pathname = 0x048FF2BC (see above)
    flags = 17 (0x00000011)
    key = 1061576240 (0x3F465E30)
    s = (H_ScopedLock)
    h = 0 (0x0000000000000000)
    args = 0x048FF25C (see above)

snd_open (snd_mgr.cpp:1333)
    vfs = 0x01A31908 (see above)
    pathname = 0x048FF2BC (see above)

CSoundGroup::PlayNext (soundgroup.cpp:157)
    pathname = 
        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        separator = 47 ('/')

    hs = (uninitialized)
    this = 0x0DE30638 -> 
        m_index = 9 (0x00000009)
        m_hReplacement = -3617008641903833651 (0xCDCDCDCDCDCDCDCD)
        snd_group = (unsupported vector<__int64 >)
        filenames = (unsupported vector<basic_string<wchar_t,char_traits<wchar_t> > >)
        playtimes = (unsupported vector<float >)
        m_filepath = 
            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            separator = "/췍ꉘⅧ㭐✜췍췍췍췍췍췍"

        m_intensity_file = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        m_CurTime = 0.000000 (0x00000000)
        m_TimeWindow = -431602080.000000 (0xCDCDCDCD)
        m_IntensityThreshold = 100 (0x00000064)
        m_Intensity = 100 (0x00000064)
        m_Decay = 3.000000 (0x40400000)
        m_Flags = [8] { 7 (0x07), 205 (0xCD), 205 (0xCD), 205 (0xCD), 154 (0x9A), 153 (0x99), 153 (0x99), 62 (0x3E) }
        m_Gain = 0.300000 (0x3E99999A)
        m_Pitch = 1.000000 (0x3F800000)
        m_Priority = 100.000000 (0x42C80000)
        m_ConeOuterGain = 1.000000 (0x3F800000)
        m_PitchUpper = 1.100000 (0x3F8CCCCD)
        m_PitchLower = 0.900000 (0x3F666666)
        m_GainUpper = 0.500000 (0x3F000000)
        m_GainLower = 0.400000 (0x3ECCCCCD)
        m_ConeInnerAngle = 360.000000 (0x43B40000)
        m_ConeOuterAngle = 360.000000 (0x43B40000)

    position = 0x048FF3E0 -> 
        X = 211.190659 (0x435330CF)
        Y = 22.381821 (0x41B30DF8)
        Z = 330.809692 (0x43A567A4)


CCmpSoundManager::PlaySoundGroup (ccmpsoundmanager.cpp:130)
    this = 0x09921878 -> 
        
            
                m_EntityId = 1 (0x00000001)
                m_SimContext = 0x097FCC20 -> 
                    m_ComponentManager = 0x097FCC30 -> 
                        m_ScriptInterface = 
                            m = (auto_ptr<ScriptInterface_impl>)

                        m_SimContext = 0x097FCC20 (see above)
                        m_CurrentComponent = 0 (0x00000000)
                        m_CurrentlyHotloading = false
                        m_ComponentTypesById = (unsupported map<int,CComponentManager::ComponentType >)
                        m_ComponentsByInterface = (unsupported vector<boost::unordered_map<size_t,IComponent *,boost::hash<size_t>,equal_to<size_t> > >)
                        m_ComponentsByTypeId = (unsupported map<int,map<size_t,IComponent * > >)
                        m_LocalMessageSubscriptions = (unsupported map<int,vector<int > >)
                        m_GlobalMessageSubscriptions = (unsupported map<int,vector<int > >)
                        m_ComponentTypeIdsByName = (unsupported map<basic_string<char,char_traits<char> >,int >)
                        m_MessageTypeIdsByName = (unsupported map<basic_string<char,char_traits<char> >,int >)
                        m_MessageTypeNamesById = (unsupported map<int,basic_string<char,char_traits<char> > >)
                        m_InterfaceIdsByName = (unsupported map<basic_string<char,char_traits<char> >,int >)
                        m_DestructionQueue = (unsupported vector<size_t >)
                        m_NextScriptComponentTypeId = 78 (0x0000004E)
                        m_NextEntityId = 1300 (0x00000514)
                        m_NextLocalEntityId = 536870946 (0x20000022)
                        m_RNG = 
                            lcf = 
                                _x = 160475196953485 (0x000091F38B1C138D)



                    m_UnitManager = 0x006A1EE8 -> 
                        m_Units = (unsupported vector<CUnit * >)
                        m_ObjectManager = 0x0986A8A4 -> 
                            m_MeshManager = 0x0986A85C -> 
                                m_MeshMap = 
                                    table_ = 
                                        
                                            
                                                buckets_ = 0x005F1978 -> 
                                                    next_ = 0x00000000

                                                bucket_count_ = 29 (0x0000001D)
                                                allocators_ = 
                                                    
                                                        (unsupported )
                                                        (unsupported )



                                            
                                                current_ = false
                                                funcs_ = [2] { (too much output; skipping to next top-level symbol),  }

                                            size_ = 27 (0x0000001B)
                                            mlf_ = 1.000000 (0x3F800000)
                                            cached_begin_bucket_ = 0x005F197C -> 
                                                next_ = 0x20C87D80 -> 
                                                    next_ = 0x00000000


                                            max_load_ = 29 (0x0000001D)



                                m_ColladaManager = 0x0986A850 -> 
                                    m = 0x09851A58 -> 
                                        dll = 
                                            m_Name = 0x01873018 -> "Collada"
                                            m_Handle = 0x00000000

                                        set_logger = 0xCDCDCDCD -> 
                                        set_skeleton_definitions = 0xCDCDCDCD (see above)
                                        convert_dae_to_pmd = 0xCDCDCDCD (see above)
                                        convert_dae_to_psa = 0xCDCDCDCD (see above)
                                        m_VFS = 
                                            px = 0x00611858 (see above)
                                            pn = 
                                                pi_ = 0x005F8E90 (see above)



                                    m_VFS = 
                                        px = 0x00611858 (see above)
                                        pn = 
                                            pi_ = 0x005F8E90 (see above)




                            m_SkeletonAnimManager = 0x0986A880 -> 
                                m_Animations = 
                                    table_ = 
                                        
                                            
                                                buckets_ = 0x005EAFD0 -> 
                                                    next_ = 0x0B86B010 -> 
                                                        next_ = 0x0B86AF60 -> 
                                                            next_ = 0x00000000



                                                bucket_count_ = 29 (0x0000001D)
                                                allocators_ = 
                                                    
                                                        (unsupported )
                                                        (unsupported )



                                            
                                                current_ = false
                                                funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 21, 0, 0, 0, 0 } }, align_ = 
                                                                t0 = 205
                                                                t1 = 205
                                                                t2 = 205
                                                                t3 = 205
                                                                t4 = 205
                                                                t5 = 205
                                                                t6 = 205
                                                                t7 = 205
                                                                t8 = 205
                                                                t9 = 205
                                                                t10 = 205
                                                                t11 = 205
                                                                t12 = 205
                                                                t13 = 205
                                                                t14 = 205
                                                                t15 = 205
                                                                t16 = 205
                                                                t17 = 205
                                                                t18 = 205
                                                                t19 = 205
                                                                t20 = 205
                                                                t21 = 205
                                                                t22 = 205
                                                                t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 21, 0, 0, 0, 0, 0 } }, align_ = 
                                                                t0 = 205
                                                                t1 = 205
                                                                t2 = 205
                                                                t3 = 205
                                                                t4 = 205
                                                                t5 = 205
                                                                t6 = 205
                                                                t7 = 205
                                                                t8 = 205
                                                                t9 = 205
                                                                t10 = 205
                                                                t11 = 205
                                                                t12 = 205
                                                                t13 = 205
                                                                t14 = 205
                                                                t15 = 205
                                                                t16 = 205
                                                                t17 = 205
                                                                t18 = 205
                                                                t19 = 205
                                                                t20 = 205
                                                                t21 = 205
                                                                t22 = 205
                                                                t23 = 205
 } } }

                                            size_ = 21 (0x00000015)
                                            mlf_ = 1.000000 (0x3F800000)
                                            cached_begin_bucket_ = 0x005EAFD0 (see above)
                                            max_load_ = 29 (0x0000001D)



                                m_ColladaManager = 0x0986A850 (see above)

                            m_Simulation = 0x097E20A8 -> 
                                m = 0x097FCC20 (see above)

                            m_Objects = (unsupported map<CObjectManager::ObjectKey,CObjectEntry * >)
                            m_ObjectBases = (unsupported map<CStrW,CObjectBase * >)


                    m_Terrain = 0x097FFB10 -> 
                        m_MapSize = 145 (0x00000091)
                        m_MapSizePatches = 9 (0x00000009)
                        m_Patches = 0x0E0CF7C4 -> 
                            
                                m_WorldBounds = 
                                    m_Data = [2] 
                                        
                                            X = 0.000000 (0x00000000)
                                            Y = 0.000000 (0x00000000)
                                            Z = 0.000000 (0x00000000)

                                        
                                            X = 64.000000 (0x42800000)
                                            Y = 22.382513 (0x41B30F63)
                                            Z = 64.000000 (0x42800000)


                                m_Transform = 
                                    _11 = 1.000000 (0x3F800000)
                                    _21 = 0.000000 (0x00000000)
                                    _31 = 0.000000 (0x00000000)
                                    _41 = 0.000000 (0x00000000)
                                    _12 = 0.000000 (0x00000000)
                                    _22 = 1.000000 (0x3F800000)
                                    _32 = 0.000000 (0x00000000)
                                    _42 = 0.000000 (0x00000000)
                                    _13 = 0.000000 (0x00000000)
                                    _23 = 0.000000 (0x00000000)
                                    _33 = 1.000000 (0x3F800000)
                                    _43 = 0.000000 (0x00000000)
                                    _14 = 0.000000 (0x00000000)
                                    _24 = 0.000000 (0x00000000)
                                    _34 = 0.000000 (0x00000000)
                                    _44 = 1.000000 (0x3F800000)
                                    _data = [16] 
                                        1.000000 (0x3F800000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        1.000000 (0x3F800000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        0.000000 (0x00000000)
                                        1.000000 (0x3F800000)
                                        0.000000 (0x00000000) ...
                                    _data2d = [4] 
                                        [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                        [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                        [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000) }
                                        [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                                m_InvTransform = 
                                    _11 = -431602080.000000 (0xCDCDCDCD)
                                    _21 = -431602080.000000 (0xCDCDCDCD)
                                    _31 = -431602080.000000 (0xCDCDCDCD)
                                    _41 = -431602080.000000 (0xCDCDCDCD)
                                    _12 = -431602080.000000 (0xCDCDCDCD)
                                    _22 = -431602080.000000 (0xCDCDCDCD)
                                    _32 = -431602080.000000 (0xCDCDCDCD)
                                    _42 = -431602080.000000 (0xCDCDCDCD)
                                    _13 = -431602080.000000 (0xCDCDCDCD)
                                    _23 = -431602080.000000 (0xCDCDCDCD)
                                    _33 = -431602080.000000 (0xCDCDCDCD)
                                    _43 = -431602080.000000 (0xCDCDCDCD)
                                    _14 = -431602080.000000 (0xCDCDCDCD)
                                    _24 = -431602080.000000 (0xCDCDCDCD)
                                    _34 = -431602080.000000 (0xCDCDCDCD)
                                    _44 = -431602080.000000 (0xCDCDCDCD)
                                    _data = [16] 
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD)
                                        -431602080.000000 (0xCDCDCDCD) ...
                                    _data2d = [4] 
                                        [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                                        [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                                        [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                                        [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }

                                m_RenderData = 0x24017758 -> 
                                    m_UpdateFlags = 0 (0x00000000)

                                m_BoundsValid = true 

                            m_bWillBeDrawn = false
                            m_MiniPatches = [16] 
                                [16] 
                                    
                                        Tex = 0x0BA83E80 -> 
                                            m_Tag = { (unsupported basic_string<char,char_traits<char> >) }
                                            m_pProperties = 
                                                px = 0x0D004520 -> 
                                                    m_pParent = 
                                                        px = 0x0D0044A8 -> 
                                                            m_pParent = 
                                                                px = 0x0D3504C8 -> 
                                                                    m_pParent = 
                                                                        px = 0x00000000
                                                                        pn = 
                                                                            pi_ = 0x00000000


                                                                    m_BaseColor = 0 (0x00000000)
                                                                    m_HasBaseColor = false
                                                                    m_MovementClass = { (unsupported basic_string<char,char_traits<char> >) }
                                                                    m_TextureAngle = 0.785398 (0x3F490FDB)
                                                                    m_TextureSize = 32.000000 (0x42000000)
                                                                    m_Groups = (unsupported vector<CTerrainGroup * >)

                                                                pn = 
                                                                    pi_ = 0x0E0CD718 -> 
                                                                        use_count_ = 20 (0x00000014)
                                                                        weak_count_ = 1 (0x00000001)



                                                            m_BaseColor = 0 (0x00000000)
                                                            m_HasBaseColor = false
                                                            m_MovementClass = { (unsupported basic_string<char,char_traits<char> >) }
                                                            m_TextureAngle = 0.785398 (0x3F490FDB)
                                                            m_TextureSize = 32.000000 (0x42000000)
                                                            m_Groups = (unsupported vector<CTerrainGroup * >)

                                                        pn = 
                                                            pi_ = 0x0E0CEE18 -> 
                                                                use_count_ = 21 (0x00000015)
                                                                weak_count_ = 1 (0x00000001)



                                                    m_BaseColor = 4278190080 (0xFF000000)
                                                    m_HasBaseColor = true 
                                                    m_MovementClass = { (unsupported basic_string<char,char_traits<char> >) }
                                                    m_TextureAngle = 0.785398 (0x3F490FDB)
                                                    m_TextureSize = 32.000000 (0x42000000)
                                                    m_Groups = (unsupported vector<CTerrainGroup * >)

                                                pn = 
                                                    pi_ = 0x0E0CEE58 -> 
                                                        use_count_ = 1 (0x00000001)
                                                        weak_count_ = 1 (0x00000001)



                                            m_Texture = 
                                                px = 0x0DF30800 -> 
                                                    m_Properties = 
                                                        m_Path = 
                                                            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                                                            separator = [8] { 47 ('/'), 52685, 9987, 0, 10497, 0, 10497, 0 }

                                                        m_Filter = 9987 (0x00002703)
                                                        m_WrapS = 10497 (0x00002901)
                                                        m_WrapT = 10497 (0x00002901)
                                                        m_Aniso = 2.000000 (0x40000000)

                                                    m_Handle = 22282429 (0x00000000015400BD)
                                                    m_BaseColour = 3422552064 (0xCC000000)
                                                    m_State = LOADED
                                                    m_TextureManager = 0x097F94E0 -> 
                                                        m_VFS = 
                                                            px = 0x00611858 (see above)
                                                            pn = 
                                                                pi_ = 0x005F8E90 (see above)


                                                        m_CacheLoader = 
                                                            m_VFS = 
                                                                px = 0x00611858 (see above)
                                                                pn = 
                                                                    pi_ = 0x005F8E90 (see above)


                                                            m_FileExtension = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)

                                                        m_DisableGL = false
                                                        m_TextureConverter = 
                                                            m_VFS = 
                                                                px = 0x00611858 (see above)
                                                                pn = 
                                                                    pi_ = 0x005F8E90 (see above)


                                                            m_HighQuality = false
                                                            m_WorkerThread = 956 (0x000003BC)
                                                            m_WorkerMutex = 0x00775ED8
                                                            m_WorkerSem = 0x000003B8
                                                            m_RequestQueue = (unsupported deque<boost::shared_ptr<CTextureConverter::ConversionRequest> >)
                                                            m_ResultQueue = (unsupported deque<boost::shared_ptr<CTextureConverter::ConversionResult> >)
                                                            m_Shutdown = false

                                                        m_DefaultHandle = 65537 (0x0000000000010001)
                                                        m_ErrorHandle = 131074 (0x0000000000020002)
                                                        m_ErrorTexture = 
                                                            px = 0x097E2410 -> 
                                                                m_Properties = 
                                                                    m_Path = 
                                                                        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                                                                        separator = [8] { 47 ('/'), 52685, 9987, 0, 10497, 0, 10497, 0 }

                                                                    m_Filter = 9987 (0x00002703)
                                                                    m_WrapS = 10497 (0x00002901)
                                                                    m_WrapT = 10497 (0x00002901)
                                                                    m_Aniso = 1.000000 (0x3F800000)

                                                                m_Handle = 131074 (0x0000000000020002)
                                                                m_BaseColour = 0 (0x00000000)
                                                                m_State = LOADED
                                                                m_TextureManager = 0x097F94E0 (see above)
                                                                m_Self = 
                                                                    px = 0x097E2410 (see above)
                                                                    pn = 
                                                                        pi_ = 0x097FEB90 -> 
                                                                            use_count_ = 1 (0x00000001)
                                                                            weak_count_ = 2 (0x00000002)




                                                            pn = 
                                                                pi_ = 0x097FEB90 (see above)


                                                        m_TextureCache = 
                                                            table_ = 
                                                                
                                                                    
                                                                        buckets_ = 0x0DED4A28 -> 
                                                                            next_ = 0x00000000

                                                                        bucket_count_ = 769 (0x00000301)
                                                                        allocators_ = 
                                                                            
                                                                                (unsupported )
                                                                                (unsupported )



                                                                    
                                                                        current_ = false
                                                                        funcs_ = [2] { { data_ = { buf = [2] { (uninitialized), (uninitialized) }, align_ = 
                                                                                        t0 = (uninitialized)
                                                                                        t1 = (uninitialized)
                                                                                        t2 = (uninitialized)
                                                                                        t3 = (uninitialized)
                                                                                        t4 = (uninitialized)
                                                                                        t5 = (uninitialized)
                                                                                        t6 = (uninitialized)
                                                                                        t7 = (uninitialized)
                                                                                        t8 = (uninitialized)
                                                                                        t9 = (uninitialized)
                                                                                        t10 = (uninitialized)
                                                                                        t11 = (uninitialized)
                                                                                        t12 = (uninitialized)
                                                                                        t13 = (uninitialized)
                                                                                        t14 = (uninitialized)
                                                                                        t15 = (uninitialized)
                                                                                        t16 = (uninitialized)
                                                                                        t17 = (uninitialized)
                                                                                        t18 = (uninitialized)
                                                                                        t19 = (uninitialized)
                                                                                        t20 = (uninitialized)
                                                                                        t21 = (uninitialized)
                                                                                        t22 = (uninitialized)
                                                                                        t23 = (uninitialized)
 } }, { data_ = { buf = [2] { [8] { 205, 205, 205, 205, 205, 125 ('}'), 2, 0 }, 205 }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } } }

                                                                    size_ = 637 (0x0000027D)
                                                                    mlf_ = 1.000000 (0x3F800000)
                                                                    cached_begin_bucket_ = 0x0DED4A2C -> 
                                                                        next_ = 0x0DF3F1E8 -> 
                                                                            next_ = 0x0DE583E8 -> 
                                                                                next_ = 0x00000000



                                                                    max_load_ = 769 (0x00000301)



                                                        m_HotloadFiles = 
                                                            table_ = 
                                                                
                                                                    
                                                                        buckets_ = 0x0DF46D48 -> 
                                                                            next_ = 0x00000000

                                                                        bucket_count_ = 769 (0x00000301)
                                                                        allocators_ = 
                                                                            
                                                                                (unsupported )
                                                                                (unsupported )



                                                                    
                                                                        current_ = false
                                                                        funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 157, 2, 0, 0, 0 } }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 157, 2, 0, 0, 0, 0 } }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } } }

                                                                    size_ = 669 (0x0000029D)
                                                                    mlf_ = 1.000000 (0x3F800000)
                                                                    cached_begin_bucket_ = 0x0DF46D4C -> 
                                                                        next_ = 0x0DF074B0 -> 
                                                                            next_ = 0x00000000


                                                                    max_load_ = 769 (0x00000301)



                                                        m_SettingsFiles = 
                                                            table_ = 
                                                                
                                                                    
                                                                        buckets_ = 0x097F63E0 -> 
                                                                            next_ = 0x0DEDC8B0 -> 
                                                                                next_ = 0x00000000


                                                                        bucket_count_ = 53 (0x00000035)
                                                                        allocators_ = 
                                                                            
                                                                                (unsupported )
                                                                                (unsupported )



                                                                    
                                                                        current_ = false
                                                                        funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 32 (' '), 0, 0, 0, 0 } }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 32 (' '), 0, 0, 0, 0, 0 } }, align_ = 
                                                                                        t0 = 205
                                                                                        t1 = 205
                                                                                        t2 = 205
                                                                                        t3 = 205
                                                                                        t4 = 205
                                                                                        t5 = 205
                                                                                        t6 = 205
                                                                                        t7 = 205
                                                                                        t8 = 205
                                                                                        t9 = 205
                                                                                        t10 = 205
                                                                                        t11 = 205
                                                                                        t12 = 205
                                                                                        t13 = 205
                                                                                        t14 = 205
                                                                                        t15 = 205
                                                                                        t16 = 205
                                                                                        t17 = 205
                                                                                        t18 = 205
                                                                                        t19 = 205
                                                                                        t20 = 205
                                                                                        t21 = 205
                                                                                        t22 = 205
                                                                                        t23 = 205
 } } }

                                                                    size_ = 32 (0x00000020)
                                                                    mlf_ = 1.000000 (0x3F800000)
                                                                    cached_begin_bucket_ = 0x097F63E0 (see above)
                                                                    max_load_ = 53 (0x00000035)




                                                    m_Self = 
                                                        px = 0x0DF30800 (see above)
                                                        pn = 
                                                            pi_ = 0x0DF176A0 -> 
                                                                use_count_ = 2 (0x00000002)
                                                                weak_count_ = 9 (0x00000009)




                                                pn = 
                                                    pi_ = 0x0DF176A0 (see above)


                                            m_TextureMatrix = 
                                                _11 = 0.022097 (0x3CB504F3)
                                                _21 = -0.022097 (0xBCB504F3)
                                                _31 = 0.000000 (0x00000000)
                                                _41 = 0.000000 (0x00000000)
                                                _12 = 0.000000 (0x00000000)
                                                _22 = 0.000000 (0x00000000)
                                                _32 = 0.000000 (0x00000000)
                                                _42 = 0.000000 (0x00000000)
                                                _13 = -0.022097 (0xBCB504F3)
                                                _23 = -0.022097 (0xBCB504F3)
                                                _33 = 0.000000 (0x00000000)
                                                _43 = 0.000000 (0x00000000)
                                                _14 = 0.000000 (0x00000000)
                                                _24 = 0.000000 (0x00000000)
                                                _34 = 0.000000 (0x00000000)
                                                _44 = 1.000000 (0x3F800000)
                                                _data = [16] 
                                                    0.022097 (0x3CB504F3)
                                                    -0.022097 (0xBCB504F3)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000)
                                                    -0.022097 (0xBCB504F3)
                                                    -0.022097 (0xBCB504F3)
                                                    0.000000 (0x00000000)
                                                    0.000000 (0x00000000) ...
                                                _data2d = [4] 
                                                    [4] { 0.022097 (0x3CB504F3), -0.022097 (0xBCB504F3), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                                    [4] { -0.022097 (0xBCB504F3), -0.022097 (0xBCB504F3), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                                                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                                            m_BaseColor = 4278190080 (0xFF000000)
                                            m_BaseColorValid = true 
                                            m_Groups = (unsupported vector<CTerrainGroup * >)

                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ...
                                [16] 
                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)

                                    
                                        Tex = 0x0BA83E80 (see above)
                                        Priority = 0 (0x00000000)
 ... ...
                            m_X = 0 (0x00000000)
                            m_Z = 0 (0x00000000)
                            m_Parent = 0x097FFB10 (see above)

                        m_Heightmap = 0x0B7AB178 -> 16384 (0x4000)
                        m_BaseColour = 
                            R = [8] { 255 (0xFF), 255 (0xFF), 255 (0xFF), 255 (0xFF), 253 (0xFD), 253 (0xFD), 253 (0xFD), 253 (0xFD) }
                            G = 255 (0xFF)
                            B = 255 (0xFF)
                            A = 255 (0xFF)





        m_SoundGroups = (unsupported map<basic_string<wchar_t,char_traits<wchar_t> >,CSoundGroup * >)

    name = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
    source = 948 (0x000003B4)
    cmpRangeManager = 
        m = 0x097F4808 -> 
            
                m_EntityId = 1 (0x00000001)
                m_SimContext = 0x097FCC20 (see above)



    vis = VIS_VISIBLE
    group = 0x0DE30638 (see above)

CUnitAnimation::Update (unitanimation.cpp:193)
    animDef = 0x20D88500 -> 
        m_FrameTime = 33.000000 (0x42040000)
        m_NumKeys = 29 (0x0000001D)
        m_NumFrames = 311 (0x00000137)
        m_Keys = 0x20DAB968 -> 
            m_Translation = 
                X = -0.158727 (0xBE228942)
                Y = 1.941809 (0x3FF88D2F)
                Z = -0.642303 (0xBF246DFC)

            m_Rotation = 
                m_V = 
                    X = -0.000000 (0x80000000)
                    Y = -0.973917 (0xBF7952A6)
                    Z = -0.000000 (0x80000000)

                m_W = -0.226903 (0xBE685940)



    duration = 10263.000000 (0x46205C00)
    hasLoadPos = true 
    actionPos = 8620.919922 (0x4606B3AE)
    hasActionPos = true 
    speed = 5.131500 (0x40A4353F)
    advance = 375480.218750 (0x48B75707)
    loadPos = 1642.079956 (0x44CD428F)
    it = (_Vector_iterator<_Vector_val<CUnitAnimation::SModelAnimState > >)
    this = 0x225E8540 -> 
        m_AnimStates = (vector<CUnitAnimation::SModelAnimState >)
        m_Entity = 948 (0x000003B4)
        m_Model = 0x277CD250 -> 
            
                
                    m_WorldBounds = 
                        m_Data = [2] 
                            
                                X = 208.543396 (0x43508B1C)
                                Y = 22.410460 (0x41B3489F)
                                Z = 330.337708 (0x43A52B3A)

                            
                                X = 211.407562 (0x43536856)
                                Y = 26.773624 (0x41D63062)
                                Z = 332.683350 (0x43A65778)


                    m_Transform = 
                        _11 = -0.047295 (0xBD41B8D2)
                        _21 = 0.000000 (0x00000000)
                        _31 = -0.998881 (0xBF7FB6A9)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 1.000000 (0x3F800000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.998881 (0x3F7FB6A9)
                        _23 = 0.000000 (0x00000000)
                        _33 = -0.047295 (0xBD41B8D2)
                        _43 = 0.000000 (0x00000000)
                        _14 = 211.190659 (0x435330CF)
                        _24 = 22.382513 (0x41B30F63)
                        _34 = 330.809692 (0x43A567A4)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            -0.047295 (0xBD41B8D2)
                            0.000000 (0x00000000)
                            -0.998881 (0xBF7FB6A9)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.998881 (0x3F7FB6A9)
                            0.000000 (0x00000000)
                            -0.047295 (0xBD41B8D2)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { -0.047295 (0xBD41B8D2), 0.000000 (0x00000000), -0.998881 (0xBF7FB6A9), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.998881 (0x3F7FB6A9), 0.000000 (0x00000000), -0.047295 (0xBD41B8D2), 0.000000 (0x00000000) }
                            [4] { 211.190659 (0x435330CF), 22.382513 (0x41B30F63), 330.809692 (0x43A567A4), 1.000000 (0x3F800000) }

                    m_InvTransform = 
                        _11 = -0.047295 (0xBD41B8D4)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.998881 (0x3F7FB6AB)
                        (too much output; skipping to next top-level symbol)

                    m_RenderData = 0x229D9748 -> 
                        m_UpdateFlags = 0 (0x00000000)

                    m_BoundsValid = true 

                m_Parent = 0x00000000
                m_PositionValid = false
                m_PlayerID = 2 (0x00000002)
                m_ShadingColor = 
                    r = 1.000000 (0x3F800000)
                    g = 1.000000 (0x3F800000)
                    b = 1.000000 (0x3F800000)
                    a = 1.000000 (0x3F800000)

                m_SelectionBox = 
                    m_Center = 
                        X = 209.969635 (0x4351F83A)
                        Y = 24.592041 (0x41C4BC80)
                        Z = 331.387024 (0x43A5B18A)

                    m_HalfSizes = 
                        X = 1.232382 (0x3F9DBEB2)
                        Y = 2.181582 (0x400B9F0C)
                        Z = 1.381192 (0x3FB0CAE5)

                    m_Basis = [3] 
                        
                            X = -0.047297 (0xBD41BB02)
                            Y = 0.000000 (0x00000000)
                            Z = -0.998881 (0xBF7FB6A7)

                        
                            X = 0.000000 (0x00000000)
                            Y = 1.000000 (0x3F800000)
                            Z = 0.000000 (0x00000000)

                        
                            X = 0.998881 (0x3F7FB6AA)
                            Y = 0.000000 (0x00000000)
                            Z = -0.047295 (0xBD41B7F4)


                m_SelectionBoxValid = false
                m_CustomSelectionShape = 0x00000000

            m_Flags = 5 (0x00000005)
            m_Texture = 
                px = 0x0DEB70E0 -> 
                    m_Properties = 
                        m_Path = 
                            path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                            separator = [8] { 47 ('/'), 52685, 9987, 0, 33071, 0, 33071, 0 }

                        m_Filter = 9987 (0x00002703)
                        m_WrapS = 33071 (0x0000812F)
                        m_WrapT = 33071 (0x0000812F)
                        m_Aniso = 1.000000 (0x3F800000)

                    m_Handle = 22151355 (0x00000000015200BB)
                    m_BaseColour = 2679807625 (0x9FBA9E89)
                    m_State = LOADED
                    m_TextureManager = 0x097F94E0 (see above)
                    m_Self = 
                        px = 0x0DEB70E0 (see above)
                        pn = 
                            pi_ = 0x20D88300 -> 
                                use_count_ = 359 (0x00000167)
                                weak_count_ = 8 (0x00000008)




                pn = 
                    pi_ = 0x20D88300 (see above)


            m_Material = 
                m_Texture = { (unsupported basic_string<char,char_traits<char> >) }
                m_Alpha = false
                m_PlayerID = 2 (0x00000002)
                m_TextureColor = 
                    r = 1.000000 (0x3F800000)
                    g = 1.000000 (0x3F800000)
                    b = 1.000000 (0x3F800000)
                    a = 1.000000 (0x3F800000)

                m_UsePlayerColor = true 
                m_UseTextureColor = false

            m_pModelDef = 
                px = 0x203417A0 -> 
                    m_NumVertices = 302 (0x0000012E)
                    m_pVertices = 0x0BAF9178 -> 
                        m_Coords = 
                            X = 0.507903 (0x3F0205F2)
                            Y = 1.466088 (0x3FBBA8C2)
                            Z = 0.157111 (0x3E20E1AC)

                        m_Norm = 
                            X = 0.788361 (0x3F49D206)
                            Y = 0.047649 (0x3D432B98)
                            Z = 0.613365 (0x3F1D057C)

                        m_U = 0.810705 (0x3F4F8A5D)
                        m_V = 0.125270 (0x3E0046C7)
                        m_Blend = 
                            m_Bone = [4] { [8] { 19 (0x13), 255 (0xFF), 255 (0xFF), 255 (0xFF), 0 (0x00), 0 (0x00), 128 (0x80), 63 (0x3F) }, 255 (0xFF), 255 (0xFF), 255 (0xFF) }
                            m_Weight = [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }


                    m_NumFaces = 390 (0x00000186)
                    m_pFaces = 0x0B92DAE0 -> 
                        m_Verts = [3] { 0 (0x0000), 1 (0x0001), 2 (0x0002) }

                    m_NumBones = 29 (0x0000001D)
                    m_Bones = 0x0D350C38 -> 
                        m_Translation = 
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)

                        m_Rotation = 
                            m_V = 
                                X = 0.000000 (0x00000000)
                                Y = 0.000000 (0x00000000)
                                Z = 0.000000 (0x00000000)

                            m_W = -1.000000 (0xBF800000)


                    m_NumBlends = 91 (0x0000005B)
                    m_pBlends = 0x0D2C7780 -> 
                        m_Bone = [4] { [8] { 19 (0x13), 20 (0x14), 255 (0xFF), 255 (0xFF), 249 (0xF9), 162 (0xA2), 121 (0x79), 63 (0x3F) }, 20 (0x14), 255 (0xFF), 255 (0xFF) }
                        m_Weight = [4] { 0.975143 (0x3F79A2F9), 0.024857 (0x3CCBA0E8), 0.000000 (0x00000000), 0.000000 (0x00000000) }

                    m_pBlendIndices = 0x0993AE20 -> 19 (0x00000013)
                    m_PropPoints = (unsupported vector<SPropPoint >)
                    m_Name = 
                        path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                        separator = [8] { 47 ('/'), 52685, 48224, 3377, 52685, 52685, 8488, 3575 }

                    m_RenderData = (unsupported map<void const *,CModelDefRPrivate * >)

                pn = 
                    pi_ = 0x0D2CD708 -> 
                        use_count_ = 2712 (0x00000A98)
                        weak_count_ = 3 (0x00000003)



            m_ObjectBounds = 
                m_Data = [2] 
                    
                        X = -1.751325 (0xBFE02B6B)
                        Y = 0.027947 (0x3CE4F097)
                        Z = -2.628159 (0xC02833C0)

                    
                        X = 0.466159 (0x3EEEAC59)
                        Y = 4.391111 (0x408C83FC)
                        Z = 0.134224 (0x3E0971EA)


            m_Anim = 0x27454E38 -> 
                m_Name = { (unsupported basic_string<char,char_traits<char> >) }
                m_AnimDef = 0x20D88500 (see above)
                m_Speed = 0.900000 (0x3F666666)
                m_ActionPos = 8620.919922 (0x4606B3AE)
                m_ActionPos2 = 1642.079956 (0x44CD428F)
                m_ObjectBounds = 
                    m_Data = [2] 
                        
                            X = -1.751325 (0xBFE02B6B)
                            Y = 0.027947 (0x3CE4F097)
                            Z = -2.628159 (0xC02833C0)

                        
                            X = 0.466159 (0x3EEEAC59)
                            Y = 4.391111 (0x408C83FC)
                            Z = 0.134224 (0x3E0971EA)



            m_AnimTime = 3856.812500 (0x45710D00)
            m_BoneMatrices = 0x278A9DF0 -> 
                _11 = -0.341745 (0xBEAEF940)
                _21 = 0.182973 (0x3E3B5D60)
                _31 = 0.921808 (0x3F6BFBA1)
                _41 = 0.000000 (0x00000000)
                _12 = 0.063582 (0x3D823782)
                _22 = 0.983118 (0x3F7BAD9D)
                _32 = -0.171571 (0xBE2FB041)
                _42 = 0.000000 (0x00000000)
                _13 = -0.937639 (0xBF70091E)
                _23 = -0.000023 (0xB7BE7000)
                _33 = -0.347610 (0xBEB1F9EB)
                _43 = 0.000000 (0x00000000)
                _14 = 210.503586 (0x435280EB)
                _24 = 24.324539 (0x41C298A8)
                _34 = 331.029633 (0x43A583CB)
                _44 = 1.000000 (0x3F800000)
                _data = [16] 
                    -0.341745 (0xBEAEF940)
                    0.182973 (0x3E3B5D60)
                    0.921808 (0x3F6BFBA1)
                    0.000000 (0x00000000)
                    0.063582 (0x3D823782)
                    0.983118 (0x3F7BAD9D)
                    -0.171571 (0xBE2FB041)
                    0.000000 (0x00000000)
                    -0.937639 (0xBF70091E)
                    -0.000023 (0xB7BE7000)
                    -0.347610 (0xBEB1F9EB)
                    0.000000 (0x00000000) ...
                _data2d = [4] 
                    [4] { -0.341745 (0xBEAEF940), 0.182973 (0x3E3B5D60), 0.921808 (0x3F6BFBA1), 0.000000 (0x00000000) }
                    [4] { 0.063582 (0x3D823782), 0.983118 (0x3F7BAD9D), -0.171571 (0xBE2FB041), 0.000000 (0x00000000) }
                    [4] { -0.937639 (0xBF70091E), -0.000023 (0xB7BE7000), -0.347610 (0xBEB1F9EB), 0.000000 (0x00000000) }
                    [4] { 210.503586 (0x435280EB), 24.324539 (0x41C298A8), 331.029633 (0x43A583CB), 1.000000 (0x3F800000) }

            m_InverseBindBoneMatrices = 0x27721B40 -> 
                _11 = 1.000000 (0x3F800000)
                _21 = 0.000000 (0x00000000)
                _31 = 0.000000 (0x00000000)
                _41 = 0.000000 (0x00000000)
                _12 = 0.000000 (0x00000000)
                _22 = 1.000000 (0x3F800000)
                _32 = 0.000000 (0x00000000)
                _42 = 0.000000 (0x00000000)
                _13 = 0.000000 (0x00000000)
                _23 = 0.000000 (0x00000000)
                _33 = 1.000000 (0x3F800000)
                _43 = 0.000000 (0x00000000)
                _14 = 0.000000 (0x00000000)
                _24 = 0.000000 (0x00000000)
                _34 = 0.000000 (0x00000000)
                _44 = 1.000000 (0x3F800000)
                _data = [16] 
                    1.000000 (0x3F800000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    1.000000 (0x3F800000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    0.000000 (0x00000000)
                    1.000000 (0x3F800000)
                    0.000000 (0x00000000) ...
                _data2d = [4] 
                    [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                    [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000) }
                    [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

            m_Props = (vector<CModel::Prop >)
            m_AmmoPropPoint = 0x0B92EC30 -> 
                m_Name = { (unsupported basic_string<char,char_traits<char> >) }
                m_Position = 
                    X = 0.111625 (0x3DE49BA6)
                    Y = -0.022327 (0xBCB6E71D)
                    Z = 0.047914 (0x3D444178)

                m_Rotation = 
                    m_V = 
                        X = -0.017978 (0xBC9345CF)
                        Y = 0.689260 (0x3F307356)
                        Z = -0.014345 (0xBC6B058A)

                    m_W = -0.724149 (0xBF3961D4)

                m_Transform = 
                    _11 = 0.049430 (0x3D4A773A)
                    _21 = -0.004007 (0xBB834F80)
                    _31 = 0.998769 (0x3F7FAF5B)
                    _41 = 0.000000 (0x00000000)
                    _12 = -0.045558 (0xBD3A9AC0)
                    _22 = 0.998942 (0x3F7FBAAB)
                    _32 = 0.006263 (0x3BCD370C)
                    _42 = 0.000000 (0x00000000)
                    _13 = -0.997738 (0xBF7F6BC1)
                    _23 = -0.045811 (0xBD3BA492)
                    _33 = 0.049195 (0x3D4980F6)
                    _43 = 0.000000 (0x00000000)
                    _14 = 0.111625 (0x3DE49BA6)
                    _24 = -0.022327 (0xBCB6E71D)
                    _34 = 0.047914 (0x3D444178)
                    _44 = 1.000000 (0x3F800000)
                    _data = [16] 
                        0.049430 (0x3D4A773A)
                        -0.004007 (0xBB834F80)
                        0.998769 (0x3F7FAF5B)
                        0.000000 (0x00000000)
                        -0.045558 (0xBD3A9AC0)
                        0.998942 (0x3F7FBAAB)
                        0.006263 (0x3BCD370C)
                        0.000000 (0x00000000)
                        -0.997738 (0xBF7F6BC1)
                        -0.045811 (0xBD3BA492)
                        0.049195 (0x3D4980F6)
                        0.000000 (0x00000000) ...
                    _data2d = [4] 
                        [4] { 0.049430 (0x3D4A773A), -0.004007 (0xBB834F80), 0.998769 (0x3F7FAF5B), 0.000000 (0x00000000) }
                        [4] { -0.045558 (0xBD3A9AC0), 0.998942 (0x3F7FBAAB), 0.006263 (0x3BCD370C), 0.000000 (0x00000000) }
                        [4] { -0.997738 (0xBF7F6BC1), -0.045811 (0xBD3BA492), 0.049195 (0x3D4980F6), 0.000000 (0x00000000) }
                        [4] { 0.111625 (0x3DE49BA6), -0.022327 (0xBCB6E71D), 0.047914 (0x3D444178), 1.000000 (0x3F800000) }

                m_BoneIndex = [8] { 16 (0x10), 205 (0xCD), 205 (0xCD), 205 (0xCD), 232 (0xE8), 224 (0xE0), 49 (0x31), 13 (0x0D) }

            m_AmmoLoadedProp = 3 (0x00000003)
            m_SkeletonAnimManager = 0x0986A880 (see above)

        m_Object = 0x2411A590 -> 
            m_Base = 0x0D2A3040 -> 
                m_Pathname = 
                    path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                    separator = [8] { 47 ('/'), 52685, 64144, 8408, 23296, 8392, 52685, 52685 }

                m_ShortName = { (unsupported basic_string<wchar_t,char_traits<wchar_t> >) }
                m_Properties = { m_AutoFlatten = false, m_CastShadows = true , m_FloatOnWater = false }
                m_Material = 
                    path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                    separator = [8] { 47 ('/'), 52685, 64256, 8408, 57936, 8397, 57976, 8397 }

                m_VariantGroups = (unsupported vector<vector<CObjectBase::Variant > >)
                m_ObjectManager = 0x0986A8A4 (see above)
                m_UsedFiles = 
                    table_ = 
                        
                            
                                buckets_ = 0x20C84BA0 -> 
                                    next_ = 0x20CDE1F8 -> 
                                        next_ = 0x00000000


                                bucket_count_ = 11 (0x0000000B)
                                allocators_ = 
                                    
                                        (unsupported )
                                        (unsupported )



                            
                                current_ = false
                                funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 4, 0, 0, 0, 0 } }, align_ = 
                                                t0 = 205
                                                t1 = 205
                                                t2 = 205
                                                t3 = 205
                                                t4 = 205
                                                t5 = 205
                                                t6 = 205
                                                t7 = 205
                                                t8 = 205
                                                t9 = 205
                                                t10 = 205
                                                t11 = 205
                                                t12 = 205
                                                t13 = 205
                                                t14 = 205
                                                t15 = 205
                                                t16 = 205
                                                t17 = 205
                                                t18 = 205
                                                t19 = 205
                                                t20 = 205
                                                t21 = 205
                                                t22 = 205
                                                t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 4, 0, 0, 0, 0, 0 } }, align_ = 
                                                t0 = 205
                                                t1 = 205
                                                t2 = 205
                                                t3 = 205
                                                t4 = 205
                                                t5 = 205
                                                t6 = 205
                                                t7 = 205
                                                t8 = 205
                                                t9 = 205
                                                t10 = 205
                                                t11 = 205
                                                t12 = 205
                                                t13 = 205
                                                t14 = 205
                                                t15 = 205
                                                t16 = 205
                                                t17 = 205
                                                t18 = 205
                                                t19 = 205
                                                t20 = 205
                                                t21 = 205
                                                t22 = 205
                                                t23 = 205
 } } }

                            size_ = 4 (0x00000004)
                            mlf_ = 1.000000 (0x3F800000)
                            cached_begin_bucket_ = 0x20C84BA0 (see above)
                            max_load_ = 11 (0x0000000B)




            m_TextureName = 
                path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                separator = [8] { 47 ('/'), 52685, 8064, 8427, 15104, 10032, 52685, 52685 }

            m_ModelName = 
                path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
                separator = [8] { 47 ('/'), 52685, 0, 16256, 0, 16256, 0, 16256 }

            m_Color = 
                r = 1.000000 (0x3F800000)
                g = 1.000000 (0x3F800000)
                b = 1.000000 (0x3F800000)
                a = 1.000000 (0x3F800000)

            m_ProjectileModelName = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
            m_Model = 0x23088290 -> 
                
                    m_WorldBounds = 
                        m_Data = [2] 
                            
                                X = 340282346638528860000000000000000000000.000000 (0x7F7FFFFF)
                                Y = 340282346638528860000000000000000000000.000000 (0x7F7FFFFF)
                                Z = 340282346638528860000000000000000000000.000000 (0x7F7FFFFF)

                            
                                X = -340282346638528860000000000000000000000.000000 (0xFF7FFFFF)
                                Y = -340282346638528860000000000000000000000.000000 (0xFF7FFFFF)
                                Z = -340282346638528860000000000000000000000.000000 (0xFF7FFFFF)


                    m_Transform = 
                        _11 = 1.000000 (0x3F800000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 1.000000 (0x3F800000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000000 (0x00000000)
                        _33 = 1.000000 (0x3F800000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.000000 (0x00000000)
                        _24 = 0.000000 (0x00000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                    m_InvTransform = 
                        _11 = -431602080.000000 (0xCDCDCDCD)
                        _21 = -431602080.000000 (0xCDCDCDCD)
                        _31 = -431602080.000000 (0xCDCDCDCD)
                        _41 = -431602080.000000 (0xCDCDCDCD)
                        _12 = -431602080.000000 (0xCDCDCDCD)
                        _22 = -431602080.000000 (0xCDCDCDCD)
                        _32 = -431602080.000000 (0xCDCDCDCD)
                        _42 = -431602080.000000 (0xCDCDCDCD)
                        _13 = -431602080.000000 (0xCDCDCDCD)
                        _23 = -431602080.000000 (0xCDCDCDCD)
                        _33 = -431602080.000000 (0xCDCDCDCD)
                        _43 = -431602080.000000 (0xCDCDCDCD)
                        _14 = -431602080.000000 (0xCDCDCDCD)
                        _24 = -431602080.000000 (0xCDCDCDCD)
                        _34 = -431602080.000000 (0xCDCDCDCD)
                        _44 = -431602080.000000 (0xCDCDCDCD)
                        _data = [16] 
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD)
                            -431602080.000000 (0xCDCDCDCD) ...
                        _data2d = [4] 
                            [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                            [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                            [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }
                            [4] { -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD), -431602080.000000 (0xCDCDCDCD) }

                    m_RenderData = 0x00000000
                    m_BoundsValid = false

                m_Parent = 0x00000000
                m_PositionValid = true 
                m_PlayerID = 4294967295 (0xFFFFFFFF)
                m_ShadingColor = 
                    r = 1.000000 (0x3F800000)
                    g = 1.000000 (0x3F800000)
                    b = 1.000000 (0x3F800000)
                    a = 1.000000 (0x3F800000)

                m_SelectionBox = 
                    m_Center = 
                        X = 0.000000 (0x00000000)
                        Y = 0.000000 (0x00000000)
                        Z = 0.000000 (0x00000000)

                    m_HalfSizes = 
                        X = 0.000000 (0x00000000)
                        Y = 0.000000 (0x00000000)
                        Z = 0.000000 (0x00000000)

                    m_Basis = [3] 
                        
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)

                        
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)

                        
                            X = 0.000000 (0x00000000)
                            Y = 0.000000 (0x00000000)
                            Z = 0.000000 (0x00000000)


                m_SelectionBoxValid = false
                m_CustomSelectionShape = 0x00000000

            m_Outdated = false
            m_Animations = (unsupported multimap<CStr8,CSkeletonAnim * >)

        m_State = { (unsupported basic_string<char,char_traits<char> >) }
        m_Looping = true 
        m_OriginalSpeed = 1.000000 (0x3F800000)
        m_Speed = 1.047635 (0x3F8618EB)
        m_SyncRepeatTime = 2000.000000 (0x44FA0000)
        m_Desync = 0.049988 (0x3D4CC000)
        m_ActionSound = { (unsupported basic_string<wchar_t,char_traits<wchar_t> >) }

    time = 73171.632813 (0x478EE9D1)

CUnit::UpdateModel (unit.cpp:71)
    this = 0x23149440 -> 
        m_Object = 0x2411A590 (see above)
        m_Model = 0x277CD250 (see above)
        m_Animation = 0x225E8540 (see above)
        m_ID = 948 (0x000003B4)
        m_ActorSelections = (unsupported set<CStr8 >)
        m_EntitySelections = (unsupported set<CStr8 >)
        m_ObjectManager = 0x0986A8A4 (see above)

    frameTime = 73.171631 (0x429257E0)

CCmpVisualActor::Interpolate (ccmpvisualactor.cpp:629)
    this = 0x22E88058 -> 
        
            
                m_EntityId = 948 (0x000003B4)
                m_SimContext = 0x097FCC20 (see above)


        m_ActorName = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        m_Unit = 0x23149440 (see above)
        m_R = 
            value = 65536 (0x00010000)

        m_G = 
            value = 65536 (0x00010000)

        m_B = 
            value = 65536 (0x00010000)

        m_Visibility = VIS_VISIBLE
        m_AnimRunThreshold = 
            value = 0 (0x00000000)

        m_AnimName = (unsupported basic_string<char,char_traits<char> >)
        m_AnimOnce = false
        m_AnimSpeed = 
            value = 65536 (0x00010000)

        m_SoundGroup = (unsupported basic_string<wchar_t,char_traits<wchar_t> >)
        m_AnimDesync = 
            value = 3276 (0x00000CCC)

        m_AnimSyncRepeatTime = 
            value = 131072000 (0x07D00000)


    frameTime = 73.171631 (0x429257E0)
    frameOffset = 1.000000 (0x3F800000)
    transform = 
        _11 = -0.047295 (0xBD41B8D2)
        _21 = 0.000000 (0x00000000)
        _31 = -0.998881 (0xBF7FB6A9)
        _41 = 0.000000 (0x00000000)
        _12 = 0.000000 (0x00000000)
        _22 = 1.000000 (0x3F800000)
        _32 = 0.000000 (0x00000000)
        _42 = 0.000000 (0x00000000)
        _13 = 0.998881 (0x3F7FB6A9)
        _23 = 0.000000 (0x00000000)
        _33 = -0.047295 (0xBD41B8D2)
        _43 = 0.000000 (0x00000000)
        _14 = 211.190659 (0x435330CF)
        _24 = 22.382513 (0x41B30F63)
        _34 = 330.809692 (0x43A567A4)
        _44 = 1.000000 (0x3F800000)
        _data = [16] 
            -0.047295 (0xBD41B8D2)
            0.000000 (0x00000000)
            -0.998881 (0xBF7FB6A9)
            0.000000 (0x00000000)
            0.000000 (0x00000000)
            1.000000 (0x3F800000)
            0.000000 (0x00000000)
            0.000000 (0x00000000)
            0.998881 (0x3F7FB6A9)
            0.000000 (0x00000000)
            -0.047295 (0xBD41B8D2)
            0.000000 (0x00000000) ...
        _data2d = [4] 
            [4] { -0.047295 (0xBD41B8D2), 0.000000 (0x00000000), -0.998881 (0xBF7FB6A9), 0.000000 (0x00000000) }
            [4] { 0.000000 (0x00000000), 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
            [4] { 0.998881 (0x3F7FB6A9), 0.000000 (0x00000000), -0.047295 (0xBD41B8D2), 0.000000 (0x00000000) }
            [4] { 211.190659 (0x435330CF), 22.382513 (0x41B30F63), 330.809692 (0x43A567A4), 1.000000 (0x3F800000) }

    model = 0x277CD250 (see above)
    cmpVision = 
        m = 0x23229718 -> 
            
                m_EntityId = 948 (0x000003B4)
                m_SimContext = 0x097FCC20 (see above)



    cmpPosition = 
        m = 0x230E2558 -> 
            
                m_EntityId = 948 (0x000003B4)
                m_SimContext = 0x097FCC20 (see above)



    floating = false

CCmpVisualActor::HandleMessage (ccmpvisualactor.cpp:265)
    this = 0x22E88058 (see above)
    msg = 0x048FF728 -> 
        m_Cached = 
            m_Val = 
                px = 0x00000000
                pn = 
                    pi_ = 0x00000000




    __formal = false

CComponentManager::BroadcastMessage (componentmanager.cpp:826)
    emap = (unsupported _Tree_const_iterator<_Tree_val<<int,map<size_t,IComponent * >> >)
    eit = (unsupported _Tree_const_iterator<_Tree_val<<size_t,IComponent *> >)
    ctit = (unsupported _Vector_const_iterator<_Vector_val<int > >)
    this = 0x097FCC30 (see above)
    msg = 0x048FF728 (see above)
    it = (unsupported _Tree_const_iterator<_Tree_val<<int,vector<int >> >)

CSimulation2Impl::Interpolate (simulation2.cpp:525)
    this = 0x097FCC20 (see above)
    frameLength = 73.171631 (0x429257E0)
    frameOffset = 1.000000 (0x3F800000)
    msg = 
        
            m_Cached = 
                m_Val = 
                    px = 0x00000000
                    pn = 
                        pi_ = 0x00000000




        frameTime = 73.171631 (0x429257E0)
        offset = 1.000000 (0x3F800000)

    profile2__ = 
        m_Name = 0x017B9758 -> "sim interpolate"


CSimulation2::Interpolate (simulation2.cpp:658)
    this = 0x097E20A8 (see above)
    frameLength = 73.171631 (0x429257E0)
    frameOffset = 1.000000 (0x3F800000)

CNetTurnManager::Interpolate (netturnmanager.cpp:257)
    this = 0x098713C0 -> 
        m_Simulation2 = 0x097E20A8 (see above)
        m_CurrentTurn = 178 (0x000000B2)
        m_ReadyTurn = 179 (0x000000B3)
        m_TurnLength = 200 (0x000000C8)
        m_QueuedCommands = (unsupported deque<map<size_t,vector<SimulationCommand > > >)
        m_PlayerId = 1 (0x00000001)
        m_ClientId = 0 (0x00000000)
        m_DeltaTime = 1038.073975 (0x4481C25E)
        m_HasSyncError = false
        m_Replay = 0x0E026C98 -> (IReplayLogger)
        m_TimeWarpNumTurns = 0 (0x00000000)
        m_TimeWarpStates = (unsupported list<basic_string<char,char_traits<char> > >)
        m_QuickSaveState = (unsupported basic_string<char,char_traits<char> >)

    frameLength = 73.171631 (0x429257E0)
    offset = 1.000000 (0x3F800000)

CGame::Interpolate (game.cpp:319)
    this = 0x09864818 -> 
        m_World = 0x097FFAD0 -> 
            m_pGame = 0x09864818 (see above)
            m_Terrain = 0x097FFB10 (see above)
            m_UnitManager = 0x006A1EE8 (see above)
            m_TerritoryManager = 0x00000000

        m_Simulation2 = 0x097E20A8 (see above)
        m_GameView = 0x0E0270F8 -> 
            (Scene)
            m = 0x0986A800 -> 
                
                    (IJSObject)
                    m_JS = 0x00000000
                    m_NonsharedProperties = 
                        table_ = 
                            
                                
                                    buckets_ = 0x00000000
                                    bucket_count_ = 11 (0x0000000B)
                                    allocators_ = 
                                        
                                            (unsupported )
                                            (unsupported )



                                
                                    current_ = false
                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 0, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    (too much output; skipping to next top-level symbol)
 } } }

                                size_ = 0 (0x00000000)
                                mlf_ = 1.000000 (0x3F800000)
                                cached_begin_bucket_ = 0x00000000
                                max_load_ = 0 (0x00000000)



                    m_ScriptProperties = 
                        table_ = 
                            
                                
                                    buckets_ = 0x00000000
                                    bucket_count_ = 11 (0x0000000B)
                                    allocators_ = 
                                        
                                            (unsupported )
                                            (unsupported )



                                
                                    current_ = false
                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 0, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } } }

                                size_ = 0 (0x00000000)
                                mlf_ = 1.000000 (0x3F800000)
                                cached_begin_bucket_ = 0x00000000
                                max_load_ = 0 (0x00000000)



                    m_EngineOwned = true 

                Game = 0x09864818 (see above)
                ColladaManager = 
                    m = 0x09851A58 (see above)
                    m_VFS = 
                        px = 0x00611858 (see above)
                        pn = 
                            pi_ = 0x005F8E90 (see above)



                MeshManager = 
                    m_MeshMap = 
                        table_ = 
                            
                                
                                    buckets_ = 0x005F1978 (see above)
                                    bucket_count_ = 29 (0x0000001D)
                                    allocators_ = 
                                        
                                            (unsupported )
                                            (unsupported )



                                
                                    current_ = false
                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 27, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 27, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } } }

                                size_ = 27 (0x0000001B)
                                mlf_ = 1.000000 (0x3F800000)
                                cached_begin_bucket_ = 0x005F197C (see above)
                                max_load_ = 29 (0x0000001D)



                    m_ColladaManager = 0x0986A850 (see above)

                SkeletonAnimManager = 
                    m_Animations = 
                        table_ = 
                            
                                
                                    buckets_ = 0x005EAFD0 (see above)
                                    bucket_count_ = 29 (0x0000001D)
                                    allocators_ = 
                                        
                                            (unsupported )
                                            (unsupported )



                                
                                    current_ = false
                                    funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 21, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } }, { data_ = { buf = [1] { [8] { 205, 205, 21, 0, 0, 0, 0, 0 } }, align_ = 
                                                    t0 = 205
                                                    t1 = 205
                                                    t2 = 205
                                                    t3 = 205
                                                    t4 = 205
                                                    t5 = 205
                                                    t6 = 205
                                                    t7 = 205
                                                    t8 = 205
                                                    t9 = 205
                                                    t10 = 205
                                                    t11 = 205
                                                    t12 = 205
                                                    t13 = 205
                                                    t14 = 205
                                                    t15 = 205
                                                    t16 = 205
                                                    t17 = 205
                                                    t18 = 205
                                                    t19 = 205
                                                    t20 = 205
                                                    t21 = 205
                                                    t22 = 205
                                                    t23 = 205
 } } }

                                size_ = 21 (0x00000015)
                                mlf_ = 1.000000 (0x3F800000)
                                cached_begin_bucket_ = 0x005EAFD0 (see above)
                                max_load_ = 29 (0x0000001D)



                    m_ColladaManager = 0x0986A850 (see above)

                ObjectManager = 
                    m_MeshManager = 0x0986A85C (see above)
                    m_SkeletonAnimManager = 0x0986A880 (see above)
                    m_Simulation = 0x097E20A8 (see above)
                    m_Objects = (unsupported map<CObjectManager::ObjectKey,CObjectEntry * >)
                    m_ObjectBases = (unsupported map<CStrW,CObjectBase * >)

                LOSTexture = 
                    m_Simulation = 0x097E20A8 (see above)
                    m_Dirty = true 
                    m_Texture = 192 (0x000000C0)
                    m_MapSize = 145 (0x00000091)
                    m_TextureSize = 256 (0x00000100)
                    m_TextureMatrix = 
                        _11 = 0.000977 (0x3A800000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.000000 (0x00000000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000977 (0x3A800000)
                        _33 = 0.000000 (0x00000000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.001953 (0x3B000000)
                        _24 = 0.001953 (0x3B000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            0.000977 (0x3A800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000977 (0x3A800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 0.000977 (0x3A800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000977 (0x3A800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.001953 (0x3B000000), 0.001953 (0x3B000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                    m_MinimapTextureMatrix = 
                        _11 = 0.566406 (0x3F110000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.566406 (0x3F110000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000000 (0x00000000)
                        _33 = 0.000000 (0x00000000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.000000 (0x00000000)
                        _24 = 0.000000 (0x00000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            0.566406 (0x3F110000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.566406 (0x3F110000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 0.566406 (0x3F110000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.566406 (0x3F110000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }


                TerritoryTexture = 
                    m_Simulation = 0x097E20A8 (see above)
                    m_DirtyID = 2 (0x00000002)
                    m_Texture = 213 (0x000000D5)
                    m_MapSize = 144 (0x00000090)
                    m_TextureSize = 256 (0x00000100)
                    m_TextureMatrix = 
                        _11 = 0.000977 (0x3A800000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.000000 (0x00000000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000977 (0x3A800000)
                        _33 = 0.000000 (0x00000000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.000000 (0x00000000)
                        _24 = 0.000000 (0x00000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            0.000977 (0x3A800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000977 (0x3A800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 0.000977 (0x3A800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000977 (0x3A800000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }

                    m_MinimapTextureMatrix = 
                        _11 = 0.562500 (0x3F100000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.562500 (0x3F100000)
                        _32 = 0.000000 (0x00000000)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = 0.000000 (0x00000000)
                        _33 = 0.000000 (0x00000000)
                        _43 = 0.000000 (0x00000000)
                        _14 = 0.000000 (0x00000000)
                        _24 = 0.000000 (0x00000000)
                        _34 = 0.000000 (0x00000000)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            0.562500 (0x3F100000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.562500 (0x3F100000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 0.562500 (0x3F100000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.562500 (0x3F100000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000), 1.000000 (0x3F800000) }


                ViewCamera = 
                    m_Orientation = 
                        _11 = 1.000000 (0x3F800000)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)
                        _41 = 0.000000 (0x00000000)
                        _12 = 0.000000 (0x00000000)
                        _22 = 0.819152 (0x3F51B3F3)
                        _32 = 0.573576 (0x3F12D5E8)
                        _42 = 0.000000 (0x00000000)
                        _13 = 0.000000 (0x00000000)
                        _23 = -0.573576 (0xBF12D5E8)
                        _33 = 0.819152 (0x3F51B3F3)
                        _43 = 0.000000 (0x00000000)
                        _14 = 192.000000 (0x43400000)
                        _24 = 189.792526 (0x433DCAE3)
                        _34 = -37.425148 (0xC215B35A)
                        _44 = 1.000000 (0x3F800000)
                        _data = [16] 
                            1.000000 (0x3F800000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            0.819152 (0x3F51B3F3)
                            0.573576 (0x3F12D5E8)
                            0.000000 (0x00000000)
                            0.000000 (0x00000000)
                            -0.573576 (0xBF12D5E8)
                            0.819152 (0x3F51B3F3)
                            0.000000 (0x00000000) ...
                        _data2d = [4] 
                            [4] { 1.000000 (0x3F800000), 0.000000 (0x00000000), 0.000000 (0x00000000), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), 0.819152 (0x3F51B3F3), 0.573576 (0x3F12D5E8), 0.000000 (0x00000000) }
                            [4] { 0.000000 (0x00000000), -0.573576 (0xBF12D5E8), 0.819152 (0x3F51B3F3), 0.000000 (0x00000000) }
                            [4] { 192.000000 (0x43400000), 189.792526 (0x433DCAE3), -37.425148 (0xC215B35A), 1.000000 (0x3F800000) }

                    m_ProjMat = 
                        _11 = 2.008842 (0x400090DD)
                        _21 = 0.000000 (0x00000000)
                        _31 = 0.000000 (0x00000000)

Change History (13)

comment:1 by Jan Wassenberg, 12 years ago

There is a relatively tight upper bound on the number of active handles (16K). You can increase hdata_cap (preferably by removing the /4) to work around this in the short term. This of course begs the question whether handles are leaking - unfortunately I can't look into this ATM. If anyone is interested, the question is whether hpool.da.cur_size keeps increasing over long games.

comment:2 by historic_bruno, 12 years ago

Thanks, that's useful info :) I tried the increasing hdata_cap, but the error still occurred. It surely seems like handles are being leaked. I'll try looking into it further.

comment:3 by historic_bruno, 12 years ago

Component: Atlas editorCore engine
Milestone: BacklogAlpha 10
Priority: Should HaveMust Have
Summary: [ATLAS] Simulation test: h_mgr crashes with "Not enough memory"h_mgr crashes with "Not enough memory"

I don't see any evidence that sound handles are freed after use. During battles, sounds are constantly being played and it seems each one receives a new handle.

comment:4 by Wolter Hellmund, 12 years ago

This has not happened to me but I can confirm that a game seems to get a lot more memory-hungry over time, to unplayable levels. I have 4 GB of ram so this shouldn't be an issue, perhaps the sounds are the leak!

comment:5 by Jan Wassenberg, 12 years ago

This sounds unhealthy :/ I will leave this window open in the browser and hopefully be able to have a look soon. Probably there is some issue with the refcount.

That aside, I have been wanting to rewrite this old and crappy code for years - and that was before the advent of C++11 features that really change everything. Anyway, what are y'all's thoughts on a rewrite? The Handle thing should be replaced with smart pointers - maybe unique, more likely shared. We might also benefit from getting rid of the separate hotloading mechanism in the old h_mgr. (BTW, I'm not using this code for anything else, so it's open season on refactoring with chainsaws :D) Finally, there is quite some overlap with CTexture, so really, a lot of the old code can be sent into retirement.

in reply to:  5 comment:6 by historic_bruno, 12 years ago

Replying to jan:

That aside, I have been wanting to rewrite this old and crappy code for years - and that was before the advent of C++11 features that really change everything. Anyway, what are y'all's thoughts on a rewrite? The Handle thing should be replaced with smart pointers - maybe unique, more likely shared. We might also benefit from getting rid of the separate hotloading mechanism in the old h_mgr. (BTW, I'm not using this code for anything else, so it's open season on refactoring with chainsaws :D) Finally, there is quite some overlap with CTexture, so really, a lot of the old code can be sent into retirement.

I think Philip would be very happy about that, and I wouldn't miss the old stuff either :)

comment:7 by Wolter Hellmund, 12 years ago

Its great to see that this bug is already receiving interest in a matter of weeks! If you need any further debugging or command-line output please ask.

in reply to:  5 comment:8 by Philip Taylor, 12 years ago

Replying to jan:

It looks like we currently use h_mgr for:

  • OglTex - pretty much all resource management (caching, hotloading, etc) is handled by CTextureManager now, which uses ogl_tex_load(..., RES_UNIQUE) just as an interface to the texture loading/uploading code. (Caching is based on filename+params, not just filename, so h_mgr caching can't be used). That loading/uploading code could be moved into CTextureManager directly, or kept in lib but changed to a simpler non-h_mgr-based API (and remove lots of the code that provides unused flexibility), if there's a desire to stop using h_mgr. (There's no problem keeping it how it is, though - it works fine and isn't particularly inelegant.)
  • UniFont - all font processing happens via CTextRenderer now, which uses a pointless CFont wrapper around unifont. unifont just provides caching (via h_mgr) and font file parsing and pretty much nothing else. That could probably all be simplified significantly by adding a CFontManager which is just a map<VfsPath, shared_ptr<CFont>>, putting the file parsing code into CFontManager, putting the font state into CFont, putting the remaining unifont functionality (stringsize etc) into CTextRenderer, then removing unifont. (That would provide the added mostly-useless advantage of letting fonts use CTextureManager, with its support for async loading and automatic compression etc.)
  • Cursor - that seems to generally work fine with little bloat in the current design, though it doesn't make use of any h_mgr functionality other than caching. (Unfortunately there's a caching bug related to the forceGL flag that I hacked in - see cursor_draw.)
  • SndData, VSrc - I don't really know anything about the sound code; it seems people might want to rewrite this anyway.

In general, I think the different resource types have sufficiently differing requirements that a generic resource manager is more effort than it's worth - they all have different caching requirements (key type, eviction policy, etc) and different hotloading details (what changes should trigger reloads, how to perform the reload, etc), and the only similarity is that they all need a singleton map<VfsPathAndOtherParams, shared_ptr<CWhatever>>. In that case it seems easiest to just have multiple independent CWhateverManager classes with their own map<>s.

So, I think it's probably not worth designing a new generic resource manager - if there's problems with h_mgr then it's probably best to migrate the code to its own custom CWhateverManager instead.

comment:9 by Jan Wassenberg, 12 years ago

I can pretty much only advise from the sidelines, and quietly, because code speaks louder than words :) Your suggestions of using CTextureManager and CFontManager and removing OglTex and UniFont are good. The starting point for this discussion was that sounds are leaking, so yes, a rewrite (or at least fix) would be helpful for SndData and VSrc. Now it definitely seems worthwhile to get rid of h_mgr entirely, simply because its central design philosophy (minimizing dynamic allocations, avoiding C++ in the interface) is obsolete and unnecessarily ugly.

However, there are several bits of functionality that would be simplified or enabled by a central manager and/or common Resource base class:

  1. Only need one single map (and its shutdown logic)
  2. enable a proxy (instead of exposing shared_ptr directly) that loads the resource asynchronously, in another thread. We already do this for textures, and it's a huge win; why not also sounds and everything else?
  3. reload - you say they differ in terms of requirements, but don't all resources have in common that they arise from a certain file or other resource, and when it changes, you reload it? Seems a central manager could cover most cases without any duplication; and if other managers absolutely must listen+check for notifications separately, they still can.
  4. dependencies for proper change propagation, e.g. sound is hotloaded -> its Vsrc must be updated as well (we don't currently do this).
  5. debugging - at the end of a map, you want to ensure most short-lived objects such as sounds have been freed. If not, there is a "leak"; they could be removed forcibly.
  6. Keeping track of a memory target. If you detect that the system is low on memory, we should ask each resource whether they are essential and possibly toss them out (taking advantage of the proxy system - correctness is not impacted).

These are all things you could do per manager, but I think they make sense for all resources, and there is no sense duplicating the implementations (badly) when all resources would benefit. The items are roughly ordered by decreasing importance. Some are admittedly YAGNI, but I think an interface like this might be useful:

class Resource;
typedef std::vector<Resource> Resources;
class Resource
{
	// copy ctor etc. does atomic refcnt management (duplicates
	// shared_ptr, but necessary because of the proxy feature)

	// move ctor to avoid expensive atomic ops due to all the
	// "copying" due to storing in std containers
	
	virtual ~Resource();

    // return short-lived pointer to contents or proxy; must not be stored
	Type* Get() = 0;

	virtual Status Reload(const VfsPath& pathname) = 0;
	
	virtual PResources Dependencies() = 0;
	virtual void AddDependency() = 0;

	// called when we're exceeding our memory target; feel free
	// to ignore if this resource is cheap or essential
	virtual void UnloadIfUnreferenced();
}

Anyone interested in implementing this? I think it'd be very useful for most games. In fact I am surprised my (not all too thorough) seach hasn't turned up something exactly like it.

comment:10 by stwf, 12 years ago

Owner: set to stwf
Status: newassigned

comment:11 by Kieran P, 12 years ago

Milestone: Alpha 10Alpha 11

comment:12 by Kieran P, 12 years ago

Keywords: sound removed
Milestone: Alpha 11Backlog
Owner: stwf removed
Status: assignednew

comment:13 by historic_bruno, 12 years ago

Milestone: BacklogAlpha 11
Resolution: fixed
Status: newclosed

The original error report should be fixed by r12428.

Note: See TracTickets for help on using tickets.