#1143 closed defect (fixed)
Assertion failed: "p" Location: trace.cpp:218 (Trace::Allocate)
Reported by: | historic_bruno | Owned by: | philip |
---|---|---|---|
Priority: | Release Blocker | Milestone: | Alpha 9 |
Component: | Core engine | Keywords: | |
Cc: | Philip Taylor | Patch: |
Description
People are starting to report this error and I'm encountering it too, both in Atlas and in-game. Not sure how to reproduce it yet, but it seems to occur when loading cached shader effects (with pathnames like {cache/shaders/effects/gui_text.xml.5b6f514af325a701.xmb
}):
Assertion failed: "p" Location: trace.cpp:218 (Trace::Allocate) pyrogenesis.exe!Trace::NotifyLoad(const Path & pathname, unsigned int size) Line 160 + 0x39 bytes C++ pyrogenesis.exe!VFS::LoadFile(const Path & pathname, boost::shared_ptr<unsigned char> & fileContents, unsigned int & size) Line 187 C++ pyrogenesis.exe!CXeromyces::ReadXMBFile(const boost::shared_ptr<IVFS> & vfs, const Path & filename) Line 162 + 0x1c bytes C++ pyrogenesis.exe!CXeromyces::Load(const boost::shared_ptr<IVFS> & vfs, const Path & filename) Line 90 + 0x10 bytes C++ pyrogenesis.exe!CShaderManager::LoadEffect(const char * name, const std::map<CStr8,CStr8,std::less<CStr8>,std::allocator<std::pair<CStr8 const ,CStr8> > > & baseDefines) Line 259 C++ pyrogenesis.exe!CGUI::DrawText(SGUIText & Text, const CColor & DefaultColor, const CPos & pos, const float & z, const CRect & clipping) Line 907 + 0x86 bytes C++ pyrogenesis.exe!IGUITextOwner::DrawText(int index, const CColor & color, const CPos & pos, float z, const CRect & clipping) Line 97 + 0x1c bytes C++ pyrogenesis.exe!CButton::Draw() Line 120 C++ pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc) Line 324 C++ pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc) Line 326 + 0xd bytes C++ pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc) Line 326 + 0xd bytes C++ pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc) Line 326 + 0xd bytes C++ pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc) Line 326 + 0xd bytes C++ pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc) Line 326 + 0xd bytes C++ pyrogenesis.exe!GUI<int>::RecurseObject(int RR, IGUIObject * pObject, void (void)* pFunc) Line 326 + 0xd bytes C++ pyrogenesis.exe!CGUI::Draw() Line 453 + 0x17 bytes C++ pyrogenesis.exe!CGUIManager::Draw() Line 278 + 0x8 bytes C++ pyrogenesis.exe!Render() Line 253 C++ pyrogenesis.exe!Frame() Line 391 C++ pyrogenesis.exe!RunGameOrAtlas(int argc, const char * * argv) Line 501 + 0x5 bytes C++ pyrogenesis.exe!main(int argc, char * * argv) Line 536 + 0xc bytes C++ pyrogenesis.exe!wmain(int argc, wchar_t * * argv) Line 380 + 0xa bytes C++ pyrogenesis.exe!__tmainCRTStartup() Line 552 + 0x17 bytes C pyrogenesis.exe!CallStartupWithinTryBlock() Line 397 C++ kernel32.dll!7651339a() [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] ntdll.dll!77b89ef2() ntdll.dll!77b89ec5()
Change History (5)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
Cc: | added |
---|---|
Priority: | Must Have → Release Blocker |
More reports of this in IRC.
comment:3 by , 12 years ago
The problem is that CShaderManager
doesn't cache effect files. The other problem is that we trace IO operations with Trace
even though we never do anything with that data, so it's wasting memory.
Note:
See TracTickets
for help on using tickets.
OK, one way I'm reproducing this:
Call stack from the game's error reporter: