Page 1 of 1

World Crash: CombatProcess

Posted: Sun Oct 06, 2013 10:06 am
by John Adams
This is new, but looks like the same old thing... pointer checked, then invalidated in the next line of code. You ever figure out how this is happening? The timing seems too frequent to be coincidence.

Stack
1b8342f8()
> EQ2World.exe!ZoneServer::CombatProcess() Line 981 + 0xb bytes C++
EQ2World.exe!ZoneServer::SpawnProcess() Line 1034 C++
EQ2World.exe!SpawnLoop(void * tmp) Line 5193 + 0x9 bytes C++
EQ2World.exe!_callthreadstart() Line 259 + 0x6 bytes C
EQ2World.exe!_threadstart(void * ptd) Line 241 + 0x5 bytes C
kernel32.dll!_BaseThreadStart@8() + 0x34 bytes
Code

Code: Select all

bool ZoneServer::CombatProcess() {
	bool ret = true;
	Spawn* spawn = 0;
	MutexMap<int32, Spawn*>::iterator itr = spawn_list.begin();
	while (itr.Next()) {
		spawn = itr->second;
==> here		if (spawn && spawn->IsEntity())
			((Entity*)spawn)->ProcessCombat();
	}
	return ret;
}
Console
09:31:02 D Guilds : Sent guild MOTD.
'LOL'
09:31:02 D Guilds : SendGuildUpdate to client online... (Guild::SendGuildUpdate)
09:31:02 D Guilds : Found 156 Unique Account(s) in Guild
09:31:02 D Guilds : Get Guild Recruiting descriptive tag index: 0, value: 0
09:31:02 D Guilds : Get Guild Recruiting descriptive tag index: 1, value: 0
09:31:02 D Guilds : Get Guild Recruiting descriptive tag index: 2, value: 0
09:31:02 D Guilds : Get Guild Recruiting descriptive tag index: 3, value: 0
09:31:02 D Guilds : Sent guild member to a client.
09:31:02 D Guilds : Sent guild member.
09:31:02 D Guilds : Sent guild recruiter info to a client.
09:31:02 D Guilds : Guild::GetGuildMember: 454
09:31:03 D Guilds : Sent guild Event List (Guild::SendGuildEventList).
09:31:03 D Guilds : Sent guild bank events list. (Guild::SendGuildBankEventList)
09:31:03 D Guilds : Sent guild member to a client.
09:31:03 D Guilds : Sent guild member.
09:31:03 D Guilds : Sent guild Event Details (Guild::SendGuildEventDetails).
09:31:20 D Guilds : Sent ALL guild Events (Guild::SendAllGuildEvents).
09:31:20 D Guilds : Sent guild member list to a client.
09:31:24 D Guilds : Guild Member logged in.
09:31:24 D Player : Getting current title index for player 'Haeje'...
09:31:24 D Player : Getting current title index for player 'Haeje'...
09:31:24 D Merchant : Loading Buyback - Player: 454
09:31:28 D Command : Handler: 37, COMMAND: 'autoattack'
09:31:28 D Command : Player 'Haeje' (6624), Command: autoattack
09:31:28 D Command : Handler: 35, COMMAND: 'enablequeuedabilities'
09:31:28 D Command : Player 'Haeje' (6624), Command: enablequeuedabilities
09:31:28 D Command : Player 'Haeje' (6624), Command: welcome_info
09:31:28 I Command : Unhandled command: welcome_info
09:31:32 D Player : Haeje left grid 4294967295 and entered grid 295573686
09:31:57 D Command : Player 'Haeje' (6624), Command: frommerchant
09:31:57 D Command : Player 'Haeje' (6624), Command: clearallqueuedabilities
09:31:58 D Command : Player 'Haeje' (6624), Command: frommerchant
09:32:02 D Command : Player 'Haeje' (6624), Command: frommerchant
09:32:15 D Command : Player 'Haeje' (6624), Command: itemsearch
09:32:15 D Command : Player 'Haeje' (6624), Command: clearallqueuedabilities
09:32:18 D Command : Player 'Haeje' (6624), Command: cancel_broker
09:32:18 I Command : Unhandled command: cancel_broker
09:32:23 D Command : Player 'Haeje' (6624), Command: clearallqueuedabilities
09:32:35 D Command : Player 'Haeje' (6624), Command: clearallqueuedabilities
09:32:37 D Command : Player 'Haeje' (6624), Command: frommerchant
09:32:40 D Command : Player 'Haeje' (6624), Command: clearallqueuedabilities
09:33:38 D World : Timeout up!, state=
09:33:38 D Zone : Client is disconnecting in ZoneServer::ClientProcess (camping = false)
09:33:38 D Zone : Sending login equipment appearance updates...
09:33:38 D Login : Looking for Login Appearance Updates for char_id: 454
09:33:38 D Zone : Calling clients.Remove(client)...
09:33:38 D Guilds : Guild::GetGuildMember: 454
09:33:38 D Guilds : Sent guild member to a client.
09:33:38 D Guilds : Guild Member logged out.
09:33:38 D Zone : Removing client 'Haeje' (454) due to LD/Exit...
09:33:38 I Zone : Scheduling client 'Haeje' for removal.
09:33:38 D Player : Toggling Character OFFLINE!
Note this player just connected


Btw, EQ2TC went weeks without a crash, and after the last SVN update we're crashing here again after 11 successful connections.

Re: World Crash: CombatProcess

Posted: Sun Oct 06, 2013 12:45 pm
by xinux
Did this person just create a character? cause if they did they are going to crash cause creating characters are still messed up. You can create one but the struct has changed and the information isn't getting stored correctly so the character is all messed up.

Re: World Crash: CombatProcess

Posted: Tue Oct 08, 2013 10:44 am
by Jabantiz
This is an invalid pointer again... I see a possible issue where a client gets deleted the player spawn gets deleted right away which could cause this, assuming it was the player spawn that it crashed on, if not then there is some where else that spawns are being deleted when they shouldn't be.

Re: World Crash: CombatProcess

Posted: Tue Oct 08, 2013 3:01 pm
by John Adams
xinux wrote:Did this person just create a character? cause if they did they are going to crash cause creating characters are still messed up. You can create one but the struct has changed and the information isn't getting stored correctly so the character is all messed up.
Yes, this was a new character created at 2:02am that morning, but it was the DoV client
02:02:15 D Packet: Sending Login Accepted packet (LS_LoginResponse, 1096)
I should hope that character creation isn't messed up ;)