Go Back   EQEmulator Home > EQEmulator Forums > Archives > Archive::Development > Archive::Bugs

Archive::Bugs Archive area for Bugs's posts that were moved here after an inactivity period of 90 days.

Reply
 
Thread Tools Display Modes
  #1  
Old 06-04-2003, 09:16 AM
Merth
Dragon
 
Join Date: May 2003
Location: Seattle, WA
Posts: 609
Default zone.exe crashes from 6/1 CVS

I downloaded from CVS on 6/1 and have been running my server with this code for the last couple of days. I've been noticing that zone.exe crashes ... *a lot*. Has anyone else been seeing this? I compiled with VS.NET and run on XP Pro.

I normally run about 20 zone handlers per server, and after 12-16 hours of uptime, I see MOST of those crash. For half of these crashes, the zone.exe window simply disappears. For the other half, I get the Dr. Watson prompt, which allows me to debug. When I open up the debugger, the current statement will be on one of these two memcpy()'s:

client.cpp - Client::RepairInventory()
Code:
if(slotid == 0){
	//Cursor
	memcpy(&pp.invitemproperties[0],0,sizeof(ItemProperties_Struct));
client.cpp - Client::RepairInventory()
Code:
else if(slotid >= 22 && slotid <= 29){
	//Main Inventory
	pp.inventory[slotid] = 0xFFFF;
	memcpy(&pp.invitemproperties[slotid],0,sizeof(ItemProperties_Struct));
The crash is reported as an attempt to write to address 0x00000000.

It's entirely possible that the debugger is not showing the current statement to me correctly - but assuming the crash is occuring on that statement, it should be easy to put an if statement in there and catch a null pointer. I've tried this, but the crash still occurs. Here are the pointer comparisons i looked at for the main inventory crash:

pp.inventory == NULL
&(pp.inventory[slotid]) == NULL
pp.invitemproperties == NULL
&(pp.invitemproperties[slotid]) == NULL

(pp = PlayerProfile_Struct, not a ptr)

So any ideas on what's causing the crash? If I am the only one experiencing this, then I'd suspect the VS.NET compiler. If everyone else is experiencing it, then maybe we can compare reports on where the crash occurs.

Furthermore, why would a memcpy() fail if the above statements pass? It's got me curious. I'm setting up windbg at the moment so I can inspect this further.
Reply With Quote
  #2  
Old 06-04-2003, 05:34 PM
DeletedUser
Fire Beetle
 
Join Date: Sep 2002
Posts: 0
Default

that memcpy should be memset
Reply With Quote
  #3  
Old 06-05-2003, 05:11 AM
Merth
Dragon
 
Join Date: May 2003
Location: Seattle, WA
Posts: 609
Default

That appears to be the problem. Doh, should have been obvious

Thanks.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 10:42 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3