Cuberite Forum
Error Loading Chunks - Printable Version

+- Cuberite Forum (https://forum.cuberite.org)
+-- Forum: Cuberite (https://forum.cuberite.org/forum-4.html)
+--- Forum: Discussion (https://forum.cuberite.org/forum-5.html)
+--- Thread: Error Loading Chunks (/thread-1814.html)

Pages: 1 2


RE: Error Loading Chunks - xoft - 03-10-2015

Could you use an external file host then?


RE: Error Loading Chunks - xoft - 03-10-2015

I tried the steps you've given, and it doesn't crash for me.


RE: Error Loading Chunks - RubyGriffin - 03-12-2015

(03-10-2015, 07:42 PM)xoft Wrote: Could you use an external file host then?

https://app.box.com/s/u36hh4mut35zzqhh674f220xyxujdidq


RE: Error Loading Chunks - RubyGriffin - 03-12-2015

Hi!

Here is what I've found so far.

Here is the two threads that are causing the deadlock.

cWorld::cTickThread
locks m_CSLayers in TickMobs
tries to lock m_CriticalSection in OnTakeDamage but is is already locked by the http call thread


http call thread
locks m_CriticalSection in HandleWebRequest
tries to lock m_CSLayers in DoWithEntityByID but is is already locked by the cWorld::cTickThread



Callstack of cWorld::cTickThread
[External Code]
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
MCServer_debug.exe!cCriticalSection::Lock() Line 28 C++
MCServer_debug.exe!cCSLock::Lock() Line 114 C++
MCServer_debug.exe!cCSLock::cCSLock(cCriticalSection & a_CS) Line 90 C++
MCServer_debug.exe!cPluginLua::OnTakeDamage(cEntity & a_Receiver, TakeDamageInfo & a_TDI) Line 1330 C++
MCServer_debug.exe!cPluginManager::CallHookTakeDamage(cEntity & a_Receiver, TakeDamageInfo & a_TDI) Line 1308 C++
MCServer_debug.exe!cEntity::DoTakeDamage(TakeDamageInfo & a_TDI) Line 306 C++
MCServer_debug.exe!cMonster::DoTakeDamage(TakeDamageInfo & a_TDI) Line 465 C++
MCServer_debug.exe!cEntity::TakeDamage(eDamageType a_DamageType, cEntity * a_Attacker, int a_RawDamage, int a_FinalDamage, double a_KnockbackAmount) Line 252 C++
MCServer_debug.exe!cMonster::HandleFalling() Line 422 C++
MCServer_debug.exe!cMonster::Tick(std::chrono::duration<__int64,std::ratio<1,1000> > a_Dt, cChunk & a_Chunk) Line 341 C++
MCServer_debug.exe!cAggressiveMonster::Tick(std::chrono::duration<__int64,std::ratio<1,1000> > a_Dt, cChunk & a_Chunk) Line 68 C++
MCServer_debug.exe!cWorld::TickMobs(std::chrono::duration<__int64,std::ratio<1,1000> > a_Dt) Line 1021 C++
MCServer_debug.exe!cWorld::Tick(std::chrono::duration<__int64,std::ratio<1,1000> > a_Dt, std::chrono::duration<__int64,std::ratio<1,1000> > a_LastTickDurationMSec) Line 934 C++
MCServer_debug.exe!cWorld::cTickThread::Execute() Line 243 C++
MCServer_debug.exe!cIsThread::DoExecute() Line 74 C++
[External Code]

Callstack http call thread
[External Code]
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
MCServer_debug.exe!cCriticalSection::Lock() Line 28 C++
MCServer_debug.exe!cCSLock::Lock() Line 114 C++
MCServer_debug.exe!cCSLock::cCSLock(cCriticalSection & a_CS) Line 90 C++
MCServer_debug.exe!cChunkMap::DoWithEntityByID(int a_UniqueID, cItemCallback<cEntity> & a_Callback) Line 2053 C++
MCServer_debug.exe!cWorld::DoWithEntityByID(int a_UniqueID, cItemCallback<cEntity> & a_Callback) Line 2855 C++
MCServer_debug.exe!tolua_DoWithID<cWorld,cEntity,{cWorld::DoWithEntityByID,0}>(lua_State * tolua_S) Line 647 C++
lua51.dll!luaD_precall(lua_State * L, lua_TValue * func, int nresults) Line 319 C
lua51.dll!luaV_execute(lua_State * L, int nexeccalls) Line 587 C
lua51.dll!luaD_call(lua_State * L, lua_TValue * func, int nResults) Line 377 C
lua51.dll!f_call(lua_State * L, void * ud) Line 800 C
lua51.dll!luaD_rawrunprotected(lua_State * L, void (lua_State *, void *) * f, void * ud) Line 118 C
lua51.dll!luaD_pcall(lua_State * L, void (lua_State *, void *) * func, void * u, int old_top, int ef) Line 463 C
lua51.dll!lua_pcall(lua_State * L, int nargs, int nresults, int errfunc) Line 821 C
MCServer_debug.exe!cLuaState::CallFunction(int a_NumResults) Line 1031 C++
MCServer_debug.exe!cLuaState::PushCallPop<std::basic_string<char,std::char_traits<char>,std::allocator<char> > &>(cLuaState::cRet __formal, std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_0>) Line 387 C++
MCServer_debug.exe!cLuaState::PushCallPop<HTTPRequest const *,cLuaState::cRet const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > &>(const HTTPRequest * a_Param, const cLuaState::cRet & <args_0>, std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_1>) Line 377 C++
MCServer_debug.exe!cLuaState::Call<int,HTTPRequest const * &,cLuaState::cRet const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > &>(const int & a_Function, const HTTPRequest * & <args_0>, const cLuaState::cRet & <args_1>, std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_2>) Line 272 C++
MCServer_debug.exe!cPluginLua::HandleWebRequest(const HTTPRequest * a_Request) Line 1737 C++
MCServer_debug.exe!cWebAdmin::GetPage(const HTTPRequest & a_Request) Line 467 C++
MCServer_debug.exe!tolua_AllToLua_cWebAdmin_GetPage00(lua_State * tolua_S) Line 31215 C++
lua51.dll!luaD_precall(lua_State * L, lua_TValue * func, int nresults) Line 319 C
lua51.dll!luaV_execute(lua_State * L, int nexeccalls) Line 587 C
lua51.dll!luaD_call(lua_State * L, lua_TValue * func, int nResults) Line 377 C
lua51.dll!f_call(lua_State * L, void * ud) Line 800 C
lua51.dll!luaD_rawrunprotected(lua_State * L, void (lua_State *, void *) * f, void * ud) Line 118 C
lua51.dll!luaD_pcall(lua_State * L, void (lua_State *, void *) * func, void * u, int old_top, int ef) Line 463 C
lua51.dll!lua_pcall(lua_State * L, int nargs, int nresults, int errfunc) Line 821 C
MCServer_debug.exe!cLuaState::CallFunction(int a_NumResults) Line 1031 C++
MCServer_debug.exe!cLuaState::PushCallPop<std::basic_string<char,std::char_traits<char>,std::allocator<char> > &>(cLuaState::cRet __formal, std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_0>) Line 387 C++
MCServer_debug.exe!cLuaState::PushCallPop<HTTPTemplateRequest *,cLuaState::cRet const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > &>(HTTPTemplateRequest * a_Param, const cLuaState::cRet & <args_0>, std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_1>) Line 377 C++
MCServer_debug.exe!cLuaState::PushCallPop<cWebAdmin *,HTTPTemplateRequest * &,cLuaState::cRet const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > &>(cWebAdmin * a_Param, HTTPTemplateRequest * & <args_0>, const cLuaState::cRet & <args_1>, std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_2>) Line 377 C++
MCServer_debug.exe!cLuaState::Call<char const [9],cWebAdmin * const,HTTPTemplateRequest *,cLuaState::cRet const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > &>(const char[9] & a_Function, cWebAdmin * const && <args_0>, HTTPTemplateRequest * && <args_1>, const cLuaState::cRet & <args_2>, std::basic_string<char,std::char_traits<char>,std::allocator<char> > & <args_3>) Line 272 C++
MCServer_debug.exe!cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPRequest & a_Request) Line 280 C++
MCServer_debug.exe!cWebAdmin::OnRequestFinished(cHTTPConnection & a_Connection, cHTTPRequest & a_Request) Line 660 C++
MCServer_debug.exe!cHTTPServer::RequestFinished(cHTTPConnection & a_Connection, cHTTPRequest & a_Request) Line 301 C++
MCServer_debug.exe!cHTTPConnection::OnReceivedData(const char * a_Data, unsigned int a_Size) Line 222 C++
MCServer_debug.exe!cHTTPConnection::OnReceivedData(const char * a_Data, unsigned int a_Size) Line 205 C++
MCServer_debug.exe!cTCPLinkImpl::ReadCallback(bufferevent * a_BufferEvent, void * a_Self) Line 191 C++
MCServer_debug.exe!bufferevent_run_readcb_(bufferevent * bufev, int options) Line 233 C
MCServer_debug.exe!bufferevent_trigger_nolock_(bufferevent * bufev, short iotype, int options) Line 366 C
MCServer_debug.exe!bufferevent_readcb(int fd, short event, void * arg) Line 187 C
MCServer_debug.exe!event_persist_closure(event_base * base, event * ev) Line 1531 C
MCServer_debug.exe!event_process_active_single_queue(event_base * base, evcallback_list * activeq, int max_to_process, const timeval * endtime) Line 1590 C
MCServer_debug.exe!event_process_active(event_base * base) Line 1690 C
MCServer_debug.exe!event_base_loop(event_base * base, int flags) Line 1912 C
MCServer_debug.exe!cNetworkSingleton::RunEventLoop(cNetworkSingleton * a_Self) Line 144 C++
[External Code]


RE: Error Loading Chunks - xoft - 03-12-2015

Ah, threading in webadmin plugins. Always a PITA.
http://mc-server.xoft.cz/LuaAPI/WebWorldThreads.html