Page 1 of 1

World Crash - Commands Processing

Posted: Tue May 27, 2014 7:54 am
by John Adams
This is the crash Jab just reported in another thread. EQ2World.exe was only at 470mb so it didn't seem excessively leaky.

Code: Select all

>	EQ2World.exe!Commands::Process(unsigned int index, EQ2_16BitString * command_parms, Client * client)  Line 1251	C++
 	EQ2World.exe!Client::HandlePacket(EQApplicationPacket * app)  Line 1460	C++
 	EQ2World.exe!ZoneServer::ClientProcess()  Line 2663 + 0x2a bytes	C++
 	EQ2World.exe!ZoneServer::Process()  Line 1219	C++
 	EQ2World.exe!ZoneLoop(void * tmp)  Line 5769 + 0xa bytes	C++
 	EQ2World.exe!_callthreadstart()  Line 259 + 0x6 bytes	C
 	EQ2World.exe!_threadstart(void * ptd)  Line 241 + 0x5 bytes	C
 	kernel32.dll!77e6481f() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
Code:

Code: Select all

		case COMMAND_SCRIBE_SCROLL_ITEM: {
			if (sep && sep->arg[0] && sep->IsNumber(0)) {
				Item* item = player->item_list.GetItemFromUniqueID(atoul(sep->arg[0]));
==> here			LogWrite(ITEM__DEBUG, 0, "Items", "ITEM ID: %lu", item->details.item_id);
				if (item) {
item->details was all bad mem

Last few lines of the console:
06:29:33 D LUA : Quest: If I Had A Hammer, function: GotCoal
06:29:33 D LUA : Done!
06:29:33 D Client : Send Quest Journal...
06:29:33 D Client : Client::Process, CheckQuestQueue
06:29:38 D Command : Handler: 266, COMMAND: 'scribe_scroll_item'
06:29:38 D Command : Player 'Lithillia' (6679), Command: scribe_scroll_item
06:29:38 D Items : ITEM ID: 32122
06:29:38 D Recipe : Scribing recipe book Recipe: Lucky Wolf Paw Charm (32122) for player Lithillia.
06:29:38 D Recipe : Valid recipe book that the player doesn't have
06:29:38 D Recipe : 1 recipes found for Recipe: Lucky Wolf Paw Charm book
06:29:40 D Recipe : Done adding recipes
06:29:40 D Items : Deleting item_id 32122 for player 3995

Re: World Crash - Commands Processing

Posted: Tue May 27, 2014 2:52 pm
by Jabantiz
The LogWrite should be within the if (item) as it uses item and if it is not valid it will crash. Not sure how this command would get called with a bad id but will be a simple fix, will commit it in a few mins.

EDIT: Fix committed to Dev SVN