04-01-2013, 08:27 PM
Just found a deadlock. Maybe that's the cause of all those reports of server not responding after a while.
Thread 1 callstack:
Thread 2 callstack:
Thread 1 has the cWorld::m_CSEntities critical section locked and is requesting cWorld::m_ChunkMap::m_CS (via cWorld::GetBlock())
Thread 2 has the cWorld::m_ChunkMap::m_CS critical section locked and is requesting cWorld::m_CSEntities (via cWorld::AddEntity())
Thread 1 callstack:
Code:
MCServer_debug.exe!cCSLock::cCSLock(cCriticalSection & a_CS={...}) Line 127 C++
MCServer_debug.exe!cChunkMap::GetBlock(int a_BlockX=0x0000000f, int a_BlockY=0x00000007, int a_BlockZ=0x0000000f) Line 955 + 0xc bytes C++
MCServer_debug.exe!cWorld::GetBlock(int a_X=0x0000005f, int a_Y=0x00000007, int a_Z=0xffffffcf) Line 1095 C++
MCServer_debug.exe!cPickup::HandlePhysics(float a_Dt=0.10000000) Line 113 + 0x21 bytes C++
MCServer_debug.exe!cEntity::Tick(float a_Dt=100.00000, MTRand & a_TickRandom={...}) Line 257 + 0x16 bytes C++
MCServer_debug.exe!cPickup::Tick(float a_Dt=100.00000, MTRand & a_TickRandom={...}) Line 66 C++
MCServer_debug.exe!cWorld::Tick(float a_Dt=100.00000) Line 494 + 0x33 bytes C++
MCServer_debug.exe!cRoot::TickWorlds(float a_Dt=100.00000) Line 354 + 0x17 bytes C++
Thread 2 callstack:
Code:
MCServer_debug.exe!cCSLock::cCSLock(cCriticalSection & a_CS={...}) Line 127 C++
MCServer_debug.exe!cWorld::AddEntity(cEntity * a_Entity=0x20aa2680) Line 2092 + 0x11 bytes C++
MCServer_debug.exe!cEntity::Initialize(cWorld * a_World=0x02860040) Line 122 C++
MCServer_debug.exe!cPickup::Initialize(cWorld * a_World=0x02860040) Line 46 C++
MCServer_debug.exe!cChunk::SetAllData(const unsigned char * a_BlockTypes=0x0318fdb4, const unsigned char * a_BlockMeta=0x03187dac, const unsigned char * a_BlockLight=0x00000000, const unsigned char * a_BlockSkyLight=0x00000000, ...) Line 302 + 0x26 bytes C++
MCServer_debug.exe!cChunkMap::SetChunkData(int a_ChunkX=0xfffffff6, int a_ChunkY=0x00000000, int a_ChunkZ=0xfffffff7, ...) Line 758 C++
MCServer_debug.exe!cWorld::SetChunkData(int a_ChunkX=0xfffffff6, int a_ChunkY=0x00000000, int a_ChunkZ=0xfffffff7, ...) Line 1611 C++
MCServer_debug.exe!cWSSAnvil::LoadChunkFromNBT(const cChunkCoords & a_Chunk={...}, const cParsedNBT & a_NBT={...}) Line 371 C++
MCServer_debug.exe!cWSSAnvil::LoadChunkFromData(const cChunkCoords & a_Chunk={...}, ...) Line 243 + 0x13 bytes C++
MCServer_debug.exe!cWSSAnvil::LoadChunk(const cChunkCoords & a_Chunk={...}) Line 104 + 0x10 bytes C++
MCServer_debug.exe!cWorldStorage::LoadChunk(int a_ChunkX=0xfffffff6, int a_ChunkY=0x00000000, int a_ChunkZ=0xfffffff7) Line 382 + 0x21 bytes C++
Thread 1 has the cWorld::m_CSEntities critical section locked and is requesting cWorld::m_ChunkMap::m_CS (via cWorld::GetBlock())
Thread 2 has the cWorld::m_ChunkMap::m_CS critical section locked and is requesting cWorld::m_CSEntities (via cWorld::AddEntity())