World Crash zoning 2 clients into same zone

Old bugs stored here for reference.
Locked
User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

World Crash zoning 2 clients into same zone

Post by John Adams » Mon Nov 25, 2013 3:50 pm

Had 1 toon in GM Hall, started logging 2nd (newly created) toon into Frostfang. While the 2nd toon was still connecting, I /zone 470 the 1st one, and world crashed at the IsPlayer() check.

Stack

Code: Select all

>	EQ2World__Debug.exe!Spawn::ProcessMovement() Line 1681	C++
 	EQ2World__Debug.exe!ZoneServer::SpawnProcess() Line 1018	C++
 	EQ2World__Debug.exe!SpawnLoop(void * tmp) Line 5235	C++
 	EQ2World__Debug.exe!_callthreadstart() Line 255	C
 	EQ2World__Debug.exe!_threadstart(void * ptd) Line 239	C
 	kernel32.dll!@BaseThreadInitThunk@12()	Unknown
 	ntdll.dll!___RtlUserThreadStart@8()	Unknown
 	ntdll.dll!__RtlUserThreadStart@8()	Unknown
Code

Code: Select all

void Spawn::ProcessMovement(){
==>	if(IsPlayer()){
		//Check if player is riding a boat, if so update pos (boat's current location + XYZ offsets)
		Player* player = ((Player*)this);
		Spawn* boat = player->GetBoatSpawn();
		if(boat){
			SetX(boat->GetX() + player->GetBoatX());
			SetY(boat->GetY() + player->GetBoatY());
			SetZ(boat->GetZ() + player->GetBoatZ());
		}
	}

Btw, the only difference on my local server right now is the r_SpawnUpdateTimer = 200, after trying desperately to get connected without the 4000 ping of death.

Locked

Who is online

Users browsing this forum: No registered users and 0 guests