.NyanCat 24 Posted February 20, 2020 Share Posted February 20, 2020 (edited) Hey Guys, i hope anybody can help me i followed this guide to upgrade my source code. This is the hidden content, please Sign In or Sign Up I dont know if my following problem comes from upgrading it but i do have the following very annoying problem: I suffer database crashes including core dumps from time to time. I cant reproduce it. It just happens suddely. https://metin2.download/picture/SnL5RPGPO38LXzO76bDhROmsvH0ypZ7v/.png The error log does not say anything. The source parts that are mentioned in this dump are not touched and same as original source. Maybe you have an idea? Thanks in advance! Edited September 4, 2022 by Metin2 Dev Core X - External 2 Internal 9 2 3 6 Link to comment Share on other sites More sharing options...
Tunga 10 Posted February 21, 2020 Share Posted February 21, 2020 hi, i got it when i build the core with FreeBSD 12.1. I solved it with building version 11.3. 1 Link to comment Share on other sites More sharing options...
.NyanCat 24 Posted February 21, 2020 Author Share Posted February 21, 2020 Yes thats what i actually did as well! I will try that. Thank you so much! Btw. do you have any idea why that happens? @Tunga Link to comment Share on other sites More sharing options...
Vanilla 1455 Posted February 21, 2020 Share Posted February 21, 2020 (edited) Downgrading FreeBSD version only masks the problem. Are you running it on the same machine as you're building it? If no, what version does the target system and the building system have? Can you call ldd db? What compiler are you using? Edited February 21, 2020 by Vanilla 1 We are the tortured. We're not your friends. As long as we're not visible. We are unfixable. Link to comment Share on other sites More sharing options...
.NyanCat 24 Posted February 21, 2020 Author Share Posted February 21, 2020 (edited) 1 hour ago, Vanilla said: Downgrading FreeBSD version only masks the problem. Are you running it on the same machine as you're building it? If no, what version does the target system and the building system have? Can you call ldd db? What compiler are you using? Im actually still using your source with some minor changes thank you for your great work btw! No i build it locally and run it on a root server. Both are latest FreeBSD 12.0 p11. All ports are up to date as well. Same. ldd db (on root): libc++.so.1 => /usr/lib/libc++.so.1 (0x204bd000) libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x20581000) libm.so.5 => /lib/libm.so.5 (0x2059e000) libmd.so.6 => /lib/libmd.so.6 (0x205cd000) libmysqlclient.so.18 => /usr/local/lib/mysql/libmysqlclient.so.18 (0x205f1000) libz.so.6 => /lib/libz.so.6 (0x20911000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x20929000) libthr.so.3 => /lib/libthr.so.3 (0x20941000) libc.so.7 => /lib/libc.so.7 (0x20969000) libssl.so.111 => /usr/lib/libssl.so.111 (0x20b12000) libcrypto.so.111 => /lib/libcrypto.so.111 (0x20b90000) libexecinfo.so.1 => /usr/lib/libexecinfo.so.1 (0x20de0000) libelf.so.2 => /lib/libelf.so.2 (0x20de4000) I use clang. Thanks a lot for your help! # Edit: Ah i installed most ports over pkg and upgraded everything to the latest with pkg as well while tryin to get rid of those crashes. I also installed same mysql versions on both. The compilation works flawless #Edit 2: gdb offers a bit more information then lldb: #0 0x20ae1f73 in thr_kill () from /lib/libc.so.7 #1 0x20ae01b1 in raise () from /lib/libc.so.7 #2 0x20a53353 in abort () from /lib/libc.so.7 #3 0x004603f7 in emergency_sig (sig=11) at Main.cpp:58 #4 0x20953408 in ?? () from /lib/libthr.so.3 #5 0x2095283b in ?? () from /lib/libthr.so.3 #6 <signal handler called> #7 0x00446040 in CClientManager::FlushItemCacheSet (this=0xffbfe910, pid=792) at ClientManager.cpp:1408 #8 0x0043c308 in CClientManager::UpdateLogoutPlayer (this=0xffbfe910) at ClientManagerPlayer.cpp:1335 #9 0x00440a03 in CClientManager::Process (this=0xffbfe910) at ClientManager.cpp:3089 #10 0x00440040 in CClientManager::MainLoop (this=0xffbfe910) at ClientManager.cpp:191 #11 0x00460537 in main () at Main.cpp:93 Edited February 21, 2020 by .NyanCat 1 Link to comment Share on other sites More sharing options...
Vanilla 1455 Posted February 21, 2020 Share Posted February 21, 2020 One thing I can absolutely recommend is stop using package system. It gave me enought trouble. I recommend you to stick with the ports tree and build your programs this way. Why do I say this? I've seen a lot of issues occuring with package system and building the source. If you build the programs via ports tree you make sure they are being built according to your system environment. Especially when encountering lib problems it might help you fix this issue. Next I'd like to know what exactly are in those lines? #7 0x00446040 in CClientManager::FlushItemCacheSet (this=0xffbfe910, pid=792) at ClientManager.cpp:1408 #8 0x0043c308 in CClientManager::UpdateLogoutPlayer (this=0xffbfe910) at ClientManagerPlayer.cpp:1335 And obviously Main.cpp:58 Can you post the whole functions and mark down the line that's mentioned there? And thanks for using it, though it's clearly outdated and would need a few fixes here and there ^^' I'm glad you like my work nevertheless and I hope you'll enjoy it in the future, too! We are the tortured. We're not your friends. As long as we're not visible. We are unfixable. Link to comment Share on other sites More sharing options...
.NyanCat 24 Posted February 21, 2020 Author Share Posted February 21, 2020 @Vanilla those files are still 90 % same as your last source release r71480. The lines might vary maybe between 1-3 lines according to includes and minor changes. I will provide the functions as fast as possible. Im not at home during the weekend so please stay tuned. Thanks for the suggestion with ports tree. I will change my compile environment. Do i need to change the root as well? And again. I always relied on your source. It worked best for me and you always did a great job with tutorials and help. You are indeed one of the reasons i learn with that mt2 scene for years now (10 years now). 1 Link to comment Share on other sites More sharing options...
.NyanCat 24 Posted February 23, 2020 Author Share Posted February 23, 2020 @Vanilla void CClientManager::FlushItemCacheSet(DWORD pid) { TItemCacheSetPtrMap::iterator it = m_map_pkItemCacheSetPtr.find(pid); if (it == m_map_pkItemCacheSetPtr.end()) { sys_log(0, "FLUSH_ITEMCACHESET : No ItemCacheSet pid(%d)", pid); return; } TItemCacheSet * pSet = it->second; TItemCacheSet::iterator it_set = pSet->begin(); while (it_set != pSet->end()) { CItemCache * c = *it_set++; c->Flush(); m_map_itemCache.erase(c->Get()->id); delete c; // This is line 1408 } pSet->clear(); delete pSet; m_map_pkItemCacheSetPtr.erase(it); if (g_log) sys_log(0, "FLUSH_ITEMCACHESET : Deleted pid(%d)", pid); } void CClientManager::UpdateLogoutPlayer() { time_t now = time(0); TLogoutPlayerMap::iterator it = m_map_logout.begin(); while (it != m_map_logout.end()) { TLogoutPlayer* pLogout = it->second; if (now - g_iLogoutSeconds > pLogout->time) { FlushItemCacheSet(pLogout->pid); // This is line 1335 FlushPlayerCacheSet(pLogout->pid); delete pLogout; m_map_logout.erase(it++); } else ++it; } } void emergency_sig(int sig) { if (sig == SIGSEGV) sys_log(0, "SIGNAL: SIGSEGV"); else if (sig == SIGUSR1) sys_log(0, "SIGNAL: SIGUSR1"); if (sig == SIGSEGV) abort(); // Main.cpp Line 58 } Link to comment Share on other sites More sharing options...
.NyanCat 24 Posted February 27, 2020 Author Share Posted February 27, 2020 @Vanilla any idea what might be the problem? Link to comment Share on other sites More sharing options...
.NyanCat 24 Posted March 5, 2020 Author Share Posted March 5, 2020 (edited) Okay. No one can help me so far... Still having this bug. I started to compare with other db sources (popular ones) and compared makefiles etc. There is no difference in these parts! It needs to be something regarding compiler or i dont know... I also switched root server. Same problem. Here is my latest error: https://metin2.download/picture/xXjn60jMVFBJ2mv7e2R1NvG1h9xAtFiV/.png cache.h: #ifndef __INC_COMMON_CACHE_H__ #define __INC_COMMON_CACHE_H__ template <typename T> class cache { public: cache() : m_bNeedQuery(false), m_expireTime(600), m_lastUpdateTime(0) { m_lastFlushTime = time(0); memset( &m_data, 0, sizeof(m_data) ); } T * Get(bool bUpdateTime = true) { if (bUpdateTime) m_lastUpdateTime = time(0); return &m_data; } void Put(T * pNew, bool bSkipQuery = false) { thecore_memcpy(&m_data, pNew, sizeof(T)); m_lastUpdateTime = time(0); if (!bSkipQuery) m_bNeedQuery = true; } bool CheckFlushTimeout() { if (m_bNeedQuery && time(0) - m_lastFlushTime > m_expireTime) return true; return false; } bool CheckTimeout() { if (time(0) - m_lastUpdateTime > m_expireTime) return true; return false; } void Flush() { if (!m_bNeedQuery) return; OnFlush(); m_bNeedQuery = false; m_lastFlushTime = time(0); } virtual void OnFlush() = 0; protected: T m_data; bool m_bNeedQuery; time_t m_expireTime; time_t m_lastUpdateTime; time_t m_lastFlushTime; }; #endif Compiled with -std=c++2a As i said befor. I cant trigger that crash. It just randomly appears. I realy need help with that one. Please help me. Edited September 4, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Tunga 10 Posted March 10, 2020 Share Posted March 10, 2020 On 2/21/2020 at 1:48 PM, .NyanCat said: Yes thats what i actually did as well! I will try that. Thank you so much! Btw. do you have any idea why that happens? @Tunga I didn't poke it too much but I think it depends library differences between freebsd versions. Ahh i should tell it. I was using GCC10-Devel and FreeBSD 12.1. Function that gives dump initializing sub classes. You could add error message to find exact line makes that dump. Link to comment Share on other sites More sharing options...
IceShiva 150 Posted March 10, 2020 Share Posted March 10, 2020 (edited) https://lldb.llvm.org/use/tutorial.html Run binary under lldb and trace it. I think using latest standard on metin2 source is not good idea due to changes in stl. Edited March 10, 2020 by IceShiva 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now