Cum iti dai seama de crash core

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
Z I C K
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 268
Membru din: 26 Dec 2013, 20:11
Regat: Jinno
Aprecieri: 183  
Mulţumiri: 789  
Discord: Copiază ID
Medalii

*Problemă/Întrebare: Cum imi dau seama din ce motiv pica serverul?
Tipologie server: -
*Resursă folosită:-
*ServerFiles utilizat:-
*Syserr:-
Poză:-
*Detalii suplimentare: O data la cateva ore, serverul cade / pica, fara motiv. Sau cel putin, nu stiu eu motivul.
Cum as putea afla de ce cade? In syserr apar doar erori care nu pun in pericol serverul ca sa dea crash.
Am auzit ceva despre un GDB (Game Debugger) care creaza un fisier game.core, dar nu am asa ceva.. ruleaza serverul pe FREEBSD 12.3 daca ajuta cu ceva.
The Golden Boy
Afișează semnătura
Avatar utilizator
JustMafia
Nivel 1

Nivel 1
Mesaje: 142
Membru din: 28 Feb 2020, 10:44
Server: metin2vatan.ro
Regat: Jinno
Aprecieri: 100  
Mulţumiri: 859  
 Contact:
Medalii

Bun până aici am, înțeles boss postează și tu !

ch1 syserr
db syserr
auth syserr

După primești și rezolvarea !
Metin2
Afișează semnătura
Avatar utilizator
Z I C K
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 268
Membru din: 26 Dec 2013, 20:11
Regat: Jinno
Aprecieri: 183  
Mulţumiri: 789  
Discord: Copiază ID
Medalii

asta este in gdb game.core :

#0 ITEM_MANAGER::CreateDropItemVector (this=0xffffa664, pkChr=0x0,
pkKiller=0x344ea000, vec_item=...) at item_manager.cpp:848
#1 0x08182f92 in CInputMain::TargetInfoLoad (this=0x59c4021c, ch=0x344ea000,
c_pData=0x581ce8c0 ";4t\027\201\210\033w\037\002") at input_main.cpp:71
#2 0x08188654 in CInputMain::Analyze (this=0x59c4021c, d=0x59c40180,
bHeader=<optimized out>, c_pData=0x581ce8c0 ";4t\027\201\210\033w\037\002")
at input_main.cpp:3441
#3 0x0816fb2b in CInputProcessor::Process (this=0x59c4021c,
lpDesc=0x59c40180, c_pvOrig=0x581ce8c0, iBytes=69,
r_iBytesProceed=@0xffffa554: 0) at input.cpp:103
#4 0x08138de3 in DESC::ProcessInput (this=0x59c40180) at desc.cpp:313
#5 0x08297194 in io_loop (fdw=0x2913a280) at main.cpp:1072
#6 0x08297bc1 in idle () at main.cpp:949
#7 0x08299221 in main (argc=1, argv=0xffffdc5c) at main.cpp:610
The Golden Boy
Afișează semnătura
Avatar utilizator
Cr3zy
Nivel 2

Nivel 2
Mesaje: 237
Membru din: 26 Sep 2016, 17:26
Aprecieri: 35  
Mulţumiri: 60  
Medalii

Posteaza functia acea functie(ITEM_MANAGER::CreateDropItemVector), posibil sa ia crash pentru ca pkChr este null.
Sau posteaza tot item_manager.cpp
Avatar utilizator
Z I C K
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 268
Membru din: 26 Dec 2013, 20:11
Regat: Jinno
Aprecieri: 183  
Mulţumiri: 789  
Discord: Copiază ID
Medalii

Cr3zy scrie: ↑08 Apr 2020, 20:10 Posteaza functia acea functie(ITEM_MANAGER::CreateDropItemVector), posibil sa ia crash pentru ca pkChr este null.
Sau posteaza tot item_manager.cpp
Aici este functia CreateDropItemVector :
#ifdef __SEND_TARGET_INFO__
bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item)
{
	if (pkChr->IsPolymorphed() || pkChr->IsPC())
	{
		return false;
	}

	int iLevel = pkKiller->GetLevel();

	BYTE bRank = pkChr->GetMobRank();
	LPITEM item = NULL;

	std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin();

	while (it != g_vec_pkCommonDropItem[bRank].end())
	{
		const CItemDropInfo & c_rInfo = *(it++);

		if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd)
			continue;

		TItemTable * table = GetTable(c_rInfo.m_dwVnum);

		if (!table)
			continue;

		item = NULL;

		if (table->bType == ITEM_POLYMORPH)
		{
			if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum())
			{
				item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

				if (item)
					item->SetSocket(0, pkChr->GetRaceNum());
			}
		}
		else
			item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

		if (item) vec_item.push_back(item);
	}

	// Drop Item Group
	{
		itertype(m_map_pkDropItemGroup) it;
		it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

		if (it != m_map_pkDropItemGroup.end())
		{
			typeof(it->second->GetVector()) v = it->second->GetVector();

			for (DWORD i = 0; i < v.size(); ++i)
			{
				item = CreateItem(v.dwVnum, v.iCount, 0, true);

				if (item)
				{
					if (item->GetType() == ITEM_POLYMORPH)
					{
						if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
						{
							item->SetSocket(0, pkChr->GetRaceNum());
						}
					}

					vec_item.push_back(item);
				}
			}
		}
	}

	// MobDropItem Group
	{
		itertype(m_map_pkMobItemGroup) it;
		it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());

		if ( it != m_map_pkMobItemGroup.end() )
		{
			CMobItemGroup* pGroup = it->second;

			// MOB_DROP_ITEM_BUG_FIX
			// 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ??
			if (pGroup && !pGroup->IsEmpty())
			{
				const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
				item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);

				if (item) vec_item.push_back(item);
			}
			// END_OF_MOB_DROP_ITEM_BUG_FIX
		}
	}

	// Level Item Group
	{
		itertype(m_map_pkLevelItemGroup) it;
		it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());

		if ( it != m_map_pkLevelItemGroup.end() )
		{
			if ( it->second->GetLevelLimit() <= (DWORD)iLevel )
			{
				typeof(it->second->GetVector()) v = it->second->GetVector();

				for ( DWORD i=0; i < v.size(); i++ )
				{
					DWORD dwVnum = v.dwVNum;
					item = CreateItem(dwVnum, v.iCount, 0, true);
					if ( item ) vec_item.push_back(item);
				}
			}
		}
	}

	// BuyerTheitGloves Item Group
	{
		// by mhh ?? ??? ??? ?? drop ? ???? ??
		if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
				pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
		{
			itertype(m_map_pkGloveItemGroup) it;
			it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());

			if (it != m_map_pkGloveItemGroup.end())
			{
				typeof(it->second->GetVector()) v = it->second->GetVector();

				for (DWORD i = 0; i < v.size(); ++i)
				{
					
					DWORD dwVnum = v.dwVnum;
					item = CreateItem(dwVnum, v.iCount, 0, true);
					if (item) vec_item.push_back(item);
				}
			}
		}
	}

	// ??
	if (pkChr->GetMobDropItemVnum())
	{
		itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());

		if (it != m_map_dwEtcItemDropProb.end())
		{		
			item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
			if (item) vec_item.push_back(item);
		}
	}

	if (pkChr->IsStone())
	{
		if (pkChr->GetDropMetinStoneVnum())
		{
			item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true);
			if (item) vec_item.push_back(item);
		}
	}

	return vec_item.size();
}
#endif
The Golden Boy
Afișează semnătura
Avatar utilizator
Cr3zy
Nivel 2

Nivel 2
Mesaje: 237
Membru din: 26 Sep 2016, 17:26
Aprecieri: 35  
Mulţumiri: 60  
Medalii

#ifdef __SEND_TARGET_INFO__
bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item)
{
	//// // // //  
	if ((pkChr == NULL) || (pkKiller == NULL))
		return false;
	//// // // //  //// // // //  //// // // // 
 
	if (pkChr->IsPolymorphed() || pkChr->IsPC())
	{
		return false;
	}

	int iLevel = pkKiller->GetLevel();

	BYTE bRank = pkChr->GetMobRank();
	LPITEM item = NULL;

	std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin();

	while (it != g_vec_pkCommonDropItem[bRank].end())
	{
		const CItemDropInfo & c_rInfo = *(it++);

		if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd)
			continue;

		TItemTable * table = GetTable(c_rInfo.m_dwVnum);

		if (!table)
			continue;

		item = NULL;

		if (table->bType == ITEM_POLYMORPH)
		{
			if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum())
			{
				item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

				if (item)
					item->SetSocket(0, pkChr->GetRaceNum());
			}
		}
		else
			item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

		if (item) vec_item.push_back(item);
	}

	// Drop Item Group
	{
		itertype(m_map_pkDropItemGroup) it;
		it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

		if (it != m_map_pkDropItemGroup.end())
		{
			typeof(it->second->GetVector()) v = it->second->GetVector();

			for (DWORD i = 0; i < v.size(); ++i)
			{
				item = CreateItem(v.dwVnum, v.iCount, 0, true);

				if (item)
				{
					if (item->GetType() == ITEM_POLYMORPH)
					{
						if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
						{
							item->SetSocket(0, pkChr->GetRaceNum());
						}
					}

					vec_item.push_back(item);
				}
			}
		}
	}

	// MobDropItem Group
	{
		itertype(m_map_pkMobItemGroup) it;
		it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());

		if ( it != m_map_pkMobItemGroup.end() )
		{
			CMobItemGroup* pGroup = it->second;

			// MOB_DROP_ITEM_BUG_FIX
			// 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ??
			if (pGroup && !pGroup->IsEmpty())
			{
				const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
				item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);

				if (item) vec_item.push_back(item);
			}
			// END_OF_MOB_DROP_ITEM_BUG_FIX
		}
	}

	// Level Item Group
	{
		itertype(m_map_pkLevelItemGroup) it;
		it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());

		if ( it != m_map_pkLevelItemGroup.end() )
		{
			if ( it->second->GetLevelLimit() <= (DWORD)iLevel )
			{
				typeof(it->second->GetVector()) v = it->second->GetVector();

				for ( DWORD i=0; i < v.size(); i++ )
				{
					DWORD dwVnum = v.dwVNum;
					item = CreateItem(dwVnum, v.iCount, 0, true);
					if ( item ) vec_item.push_back(item);
				}
			}
		}
	}

	// BuyerTheitGloves Item Group
	{
		// by mhh ?? ??? ??? ?? drop ? ???? ??
		if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
				pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
		{
			itertype(m_map_pkGloveItemGroup) it;
			it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());

			if (it != m_map_pkGloveItemGroup.end())
			{
				typeof(it->second->GetVector()) v = it->second->GetVector();

				for (DWORD i = 0; i < v.size(); ++i)
				{
					
					DWORD dwVnum = v.dwVnum;
					item = CreateItem(dwVnum, v.iCount, 0, true);
					if (item) vec_item.push_back(item);
				}
			}
		}
	}

	// ??
	if (pkChr->GetMobDropItemVnum())
	{
		itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());

		if (it != m_map_dwEtcItemDropProb.end())
		{		
			item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
			if (item) vec_item.push_back(item);
		}
	}

	if (pkChr->IsStone())
	{
		if (pkChr->GetDropMetinStoneVnum())
		{
			item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true);
			if (item) vec_item.push_back(item);
		}
	}

	return vec_item.size();
}
#endif
Avatar utilizator
Z I C K
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 268
Membru din: 26 Dec 2013, 20:11
Regat: Jinno
Aprecieri: 183  
Mulţumiri: 789  
Discord: Copiază ID
Medalii

Cr3zy scrie: ↑08 Apr 2020, 20:56
#ifdef __SEND_TARGET_INFO__
bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item)
{
	//// // // //  
	if ((pkChr == NULL) || (pkKiller == NULL))
		return false;
	//// // // //  //// // // //  //// // // // 
 
	if (pkChr->IsPolymorphed() || pkChr->IsPC())
	{
		return false;
	}

	int iLevel = pkKiller->GetLevel();

	BYTE bRank = pkChr->GetMobRank();
	LPITEM item = NULL;

	std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin();

	while (it != g_vec_pkCommonDropItem[bRank].end())
	{
		const CItemDropInfo & c_rInfo = *(it++);

		if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd)
			continue;

		TItemTable * table = GetTable(c_rInfo.m_dwVnum);

		if (!table)
			continue;

		item = NULL;

		if (table->bType == ITEM_POLYMORPH)
		{
			if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum())
			{
				item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

				if (item)
					item->SetSocket(0, pkChr->GetRaceNum());
			}
		}
		else
			item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);

		if (item) vec_item.push_back(item);
	}

	// Drop Item Group
	{
		itertype(m_map_pkDropItemGroup) it;
		it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

		if (it != m_map_pkDropItemGroup.end())
		{
			typeof(it->second->GetVector()) v = it->second->GetVector();

			for (DWORD i = 0; i < v.size(); ++i)
			{
				item = CreateItem(v.dwVnum, v.iCount, 0, true);

				if (item)
				{
					if (item->GetType() == ITEM_POLYMORPH)
					{
						if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
						{
							item->SetSocket(0, pkChr->GetRaceNum());
						}
					}

					vec_item.push_back(item);
				}
			}
		}
	}

	// MobDropItem Group
	{
		itertype(m_map_pkMobItemGroup) it;
		it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());

		if ( it != m_map_pkMobItemGroup.end() )
		{
			CMobItemGroup* pGroup = it->second;

			// MOB_DROP_ITEM_BUG_FIX
			// 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ??
			if (pGroup && !pGroup->IsEmpty())
			{
				const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
				item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);

				if (item) vec_item.push_back(item);
			}
			// END_OF_MOB_DROP_ITEM_BUG_FIX
		}
	}

	// Level Item Group
	{
		itertype(m_map_pkLevelItemGroup) it;
		it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());

		if ( it != m_map_pkLevelItemGroup.end() )
		{
			if ( it->second->GetLevelLimit() <= (DWORD)iLevel )
			{
				typeof(it->second->GetVector()) v = it->second->GetVector();

				for ( DWORD i=0; i < v.size(); i++ )
				{
					DWORD dwVnum = v.dwVNum;
					item = CreateItem(dwVnum, v.iCount, 0, true);
					if ( item ) vec_item.push_back(item);
				}
			}
		}
	}

	// BuyerTheitGloves Item Group
	{
		// by mhh ?? ??? ??? ?? drop ? ???? ??
		if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
				pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
		{
			itertype(m_map_pkGloveItemGroup) it;
			it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());

			if (it != m_map_pkGloveItemGroup.end())
			{
				typeof(it->second->GetVector()) v = it->second->GetVector();

				for (DWORD i = 0; i < v.size(); ++i)
				{
					
					DWORD dwVnum = v.dwVnum;
					item = CreateItem(dwVnum, v.iCount, 0, true);
					if (item) vec_item.push_back(item);
				}
			}
		}
	}

	// ??
	if (pkChr->GetMobDropItemVnum())
	{
		itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());

		if (it != m_map_dwEtcItemDropProb.end())
		{		
			item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
			if (item) vec_item.push_back(item);
		}
	}

	if (pkChr->IsStone())
	{
		if (pkChr->GetDropMetinStoneVnum())
		{
			item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true);
			if (item) vec_item.push_back(item);
		}
	}

	return vec_item.size();
}
#endif
item_manager.cpp: In member function 'bool ITEM_MANAGER::CreateDropItemVector(CH                                            ARACTER*, CHARACTER*, std::vector<CItem*, std::allocator<CItem*> >&)':
item_manager.cpp:906: error: 'const class std::vector<CDropItemGroup::SDropItemG                                            roupInfo, std::allocator<CDropItemGroup::SDropItemGroupInfo> >' has no member na                                            med 'dwVnum'
item_manager.cpp:906: error: 'const class std::vector<CDropItemGroup::SDropItemG                                            roupInfo, std::allocator<CDropItemGroup::SDropItemGroupInfo> >' has no member na                                            med 'iCount'
item_manager.cpp:959: error: 'const class std::vector<CLevelItemGroup::SLevelIte                                            mGroupInfo, std::allocator<CLevelItemGroup::SLevelItemGroupInfo> >' has no membe                                            r named 'dwVNum'
item_manager.cpp:960: error: 'const class std::vector<CLevelItemGroup::SLevelIte                                            mGroupInfo, std::allocator<CLevelItemGroup::SLevelItemGroupInfo> >' has no membe                                            r named 'iCount'
item_manager.cpp:983: error: 'const class std::vector<CBuyerThiefGlovesItemGroup                                            ::SThiefGroupInfo, std::allocator<CBuyerThiefGlovesItemGroup::SThiefGroupInfo> >                                            ' has no member named 'dwVnum'
item_manager.cpp:984: error: 'const class std::vector<CBuyerThiefGlovesItemGroup                                            ::SThiefGroupInfo, std::allocator<CBuyerThiefGlovesItemGroup::SThiefGroupInfo> >                                            ' has no member named 'iCount'


In sursa.
The Golden Boy
Afișează semnătura
Avatar utilizator
Cr3zy
Nivel 2

Nivel 2
Mesaje: 237
Membru din: 26 Sep 2016, 17:26
Aprecieri: 35  
Mulţumiri: 60  
Medalii

Nu da paste la tot codul pune doar verificare pe care am pus o

Cod: Selectaţi tot

	if ((pkChr == NULL) || (pkKiller == NULL))
		return false;
Avatar utilizator
Z I C K
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 268
Membru din: 26 Dec 2013, 20:11
Regat: Jinno
Aprecieri: 183  
Mulţumiri: 789  
Discord: Copiază ID
Medalii

Cr3zy scrie: ↑08 Apr 2020, 21:02 Nu da paste la tot codul pune doar verificare pe care am pus o

Cod: Selectaţi tot

	if ((pkChr == NULL) || (pkKiller == NULL))
		return false;
Am pus, am compilat. Am urcat game pe server, astept sa vad daca o sa mai pice.
Multumesc mult!
The Golden Boy
Afișează semnătura
Avatar utilizator
Ionuţ M.
Metin Master

Metin Master
Mesaje: 2680
Membru din: 28 Noi 2015, 22:02
Aprecieri: 170  
Mulţumiri: 12723  
  Rezolvări prob.: 2
Discord: Copiază ID
 Contact:
Medalii

Arhivat.
Imagine
Afișează semnătura
Închis
Răspunsuri
15
Vizualizări
2204
Răspunsuri
2
Vizualizări
264
Răspunsuri
15
Vizualizări
1349
Răspunsuri
9
Vizualizări
644

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 32 vizitatori