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 , 12 years ago
comment:2 by , 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 , 12 years ago
Component: | Atlas editor → Core engine |
---|---|
Milestone: | Backlog → Alpha 10 |
Priority: | Should Have → Must 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 , 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!
follow-ups: 6 8 comment:5 by , 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.
comment:6 by , 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 , 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.
comment:8 by , 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 byCTextureManager
now, which usesogl_tex_load(..., RES_UNIQUE)
just as an interface to the texture loading/uploading code. (Caching is based on filename+params, not just filename, soh_mgr
caching can't be used). That loading/uploading code could be moved intoCTextureManager
directly, or kept inlib
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 usingh_mgr
. (There's no problem keeping it how it is, though - it works fine and isn't particularly inelegant.)UniFont
- all font processing happens viaCTextRenderer
now, which uses a pointlessCFont
wrapper aroundunifont
.unifont
just provides caching (viah_mgr
) and font file parsing and pretty much nothing else. That could probably all be simplified significantly by adding aCFontManager
which is just amap<VfsPath, shared_ptr<CFont>>
, putting the file parsing code intoCFontManager
, putting the font state intoCFont
, putting the remainingunifont
functionality (stringsize
etc) intoCTextRenderer
, then removingunifont
. (That would provide the added mostly-useless advantage of letting fonts useCTextureManager
, 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 anyh_mgr
functionality other than caching. (Unfortunately there's a caching bug related to theforceGL
flag that I hacked in - seecursor_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 , 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:
- Only need one single map (and its shutdown logic)
- 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?
- 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.
- dependencies for proper change propagation, e.g. sound is hotloaded -> its Vsrc must be updated as well (we don't currently do this).
- 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.
- 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 , 12 years ago
Owner: | set to |
---|---|
Status: | new → assigned |
comment:11 by , 12 years ago
Milestone: | Alpha 10 → Alpha 11 |
---|
comment:12 by , 12 years ago
Keywords: | sound removed |
---|---|
Milestone: | Alpha 11 → Backlog |
Owner: | removed |
Status: | assigned → new |
comment:13 by , 12 years ago
Milestone: | Backlog → Alpha 11 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
The original error report should be fixed by r12428.
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.