Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bug Reports

Development::Bug Reports Post detailed bug reports and what you would like to see next in the emu here.

Reply
 
Thread Tools Display Modes
  #1  
Old 01-16-2007, 07:55 PM
number6
Sarnak
 
Join Date: Sep 2006
Posts: 62
Default Zone crashes

On my private server (The Village) I have a player with a character that crashes the zone as soon as it plays, and I believe it is the same issue as reported by http://www.projecteq.net/phpBB2/viewtopic.php?t=2055

If I restore the character to a backup, it is able to play as normal so there is something in the character data in the DB that is causing zones to crash. I am not able to see anything pertaining to this in the log files. I am about to increase debugging levels and try to track this problem down but I wanted to post this issue here now in case anyone else has seen it - and of course, if there's a fix already it'd save me a lot of work.

If anyone wants a DB dump of the character to try and reproduce on their own server I'll be happy to oblige, send me a PM. I'm running with the latest version 944 but it also exhibits the same problem on 942.

Paul.
Reply With Quote
  #2  
Old 01-17-2007, 12:49 AM
number6
Sarnak
 
Join Date: Sep 2006
Posts: 62
Default

I have a lot more info now after testing. If I remove all buffs from the character causing the problem, then they are OK after that. The problem is occurring for one player only and it now appears that after the initial titanium install, he accidentally patched. He then reisntalled Titanium *over the top* of the patched install. My current theory is that this has broken something so that the client is sending bogus profile packet data to the server, which is being duly written out to the blob, and later on is crashing the server.

I've asked the player to do a fresh install and see if the problem re-occurs. In the meantime I hacked together a really quick and dirty php script to allow players to fix it for themselves. This allows you to debuff any character on the server so it's not something you'd use for a public server but the code might be useful to someone. I can't seem to post the script here - perhaps the PHP code is upsetting the forum code here - but send me an IM if you want it.

Regards

Paul.

Last edited by number6; 01-17-2007 at 08:54 AM..
Reply With Quote
  #3  
Old 01-17-2007, 02:07 AM
John Adams
Demi-God
 
Join Date: Jul 2006
Posts: 1,552
Default

You are correct. You absolutely canNOT uninstall and reinstall without wiping out the existing Everquest (or titanium) directory. Residual files could very well cause a problem if the client "sees" them and chooses on it's own to use them.

The only safe way to recover from a patched Titanium is uninstall, delete dir completely, then reinstall, and do not patch.
Reply With Quote
  #4  
Old 01-17-2007, 08:14 PM
number6
Sarnak
 
Join Date: Sep 2006
Posts: 62
Default

Well, here's an update: the player did a fresh install but still managed to trigger the problem last night. He was fighting with his bard in tutorialb and had a "sicken" dot on him. The problem occurred when the mob that had cast sicken died. My hack to clear buffs on his character has got him up and running again. I am starting to wonder whether there's some problem with debuffs/dots on a player from time to time when the aggressor is no longer in zone.

I'm trying to work through the code that would be called to handle the dot.

Paul.
Reply With Quote
  #5  
Old 01-18-2007, 03:35 AM
cavedude's Avatar
cavedude
The PEQ Dude
 
Join Date: Apr 2003
Location: -
Posts: 1,988
Default

It is definitely a code issue, because zone crashes and it does it with my 0.6.2 client and my freshly installed Titanium client. This bug is killing us over at PEQ. We are working on it, but have yet to find a solution.

Last edited by cavedude; 01-18-2007 at 11:43 AM..
Reply With Quote
  #6  
Old 01-18-2007, 07:24 PM
number6
Sarnak
 
Join Date: Sep 2006
Posts: 62
Default

I've sent Cavedude my php hack. The problem is still happening on my server. The main issue with debugging this is that I can't seem to get anything meaningful in the logs and I'm finding the spell/buffs code a bit of a labyrinth. I'm a bit rusty on this; can anyone advise a way to get a core dump from the zone executable so I can see where it crashed via gdb, or am I talking too old technology (been a while). I'm not getting core files anywhere.

Paul.
Reply With Quote
  #7  
Old 01-18-2007, 07:30 PM
WildcardX
Developer
 
Join Date: Apr 2003
Posts: 589
Default

I shamelessly stole the php skeleton from a guy whose name escapes me but he wrote this clever php script for Minilogin support. Anyway, great job whatever your name was!

I wrote this quick for use with our world server at PEQ today and it seems to work well, but I advise you to backup your database before using this tool just to be safe.

What this does is clears all buffs from the character you specify. This does not fix the problem, but it does let you manage the issue until either KLS or myself identify the cause of this problem and implement a fix.

Anyway, use this at your own risk.

Code:
<?php

$DB_ADDY = ""; //address:port for the MySQL server
$DB_USER = ""; //username to login to MySQL with
$DB_PASS = ""; //password to login to MySQL with
$DB_DB = ""; //database name

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>PEQ - Player Character Buff Removal</title>
<style type="text/css">
<!--
body,td,th {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: 14px;
	color: #CCCCCC;
}
body {
	background-color: #000000;
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
.style1 {font-size: 9px}
.formelements {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-style: normal;
	line-height: normal;
	font-weight: normal;
	font-variant: normal;
	color: #FFFFFF;
	background-color: #333333;
	border: thin solid #666666;
}
a {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: 14px;
	color: #CCCCCC;
}
a:link {
	text-decoration: none;
}
a:visited {
	text-decoration: none;
	color: #CCCCCC;
}
a:hover {
	text-decoration: underline;
	color: #CCCCCC;
}
a:active {
	text-decoration: none;
	color: #CCCCCC;
}
.style4 {font-size: 10px}
-->
</style>
</head>

<body>
<div align="center"><?php
if(!isset($_POST['Submit'])) {
?>
  <br />
  <br />
  <form id="form1" name="form1" method="post" action="index.php">
    <table width="500" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td align="right" valign="top"><div align="right">Account Name:&nbsp;&nbsp;</div></td>
        <td align="left" valign="top"><input name="accountname" type="text" class="formelements" id="accountname" size="30" maxlength="30" />
        <br />
        <span class="style1">*must be a valid account name for this server only.</span></td>
      </tr>
      <tr>
	  	<td align="right" valign="top"><div align="right">Character Name:&nbsp;&nbsp;</div></td>
	    <td align="left" valign="top"><input name="charactername" type="text" class="formelements" id="charactername" size="64" maxlength="64" />
	   	<br />
	    <span class="style1">*must be a valid character name for the account name provided above.</span></td>
      </tr>
      <tr>
      	<br />
        <td colspan="2" align="center" valign="top"><input name="Submit" type="submit" class="formelements" value="Remove All Buffs" />&nbsp;&nbsp;&nbsp;<input name="Reset" type="reset" class="formelements" value="Clear" /></td>
      </tr>
    </table>
  </form>
<?php
} else {
	$link = mysql_connect($DB_ADDY,$DB_USER,$DB_PASS);
	mysql_select_db($DB_DB,$link);
	$sql_select_charid = "select c.id from account a inner join character_ c on a.id = c.account_id where a.name like '".($_REQUEST['accountname'])."' and c.name like '".($_REQUEST['charactername'])."'";
	$res = mysql_query($sql_select_charid,$link) or die ("MySQL server database error: ".mysql_error());
	$row_count = mysql_num_rows($res);

	if($row_count == 1) {
		$row = mysql_fetch_row($res);
		$characterid = $row[0];

		if($characterid >= 0) {
			$sql_select_character_profile = "select profile from character_ where id = ".$characterid;
			$res = mysql_query($sql_select_character_profile,$link) or die ("MySQL server database error: ".mysql_error());

			if($res) {
				$row = mysql_fetch_row($res);
				$profile_data = $row[0];
				$before_length = strlen($profile_data);
				$i = 5506;

				while($i < 6008) {
					$profile_data[$i] = 0;
					$i++;
				}

				$after_length = strlen($profile_data);

				if($before_length == $after_length) {
					$sql_profile_update = "update character_ set profile = '$profile_data' where id = '$characterid'";

					// echo "<p>$sql_profile_update</p>";

					mysql_query($sql_profile_update,$link) or die ("MySQL server database error: ".mysql_error());

					echo "<p>Successfully removed all buffs from character ".($_REQUEST['charactername'])." (".$characterid.")!</p>";

					// echo "<p>Before the update, profile length was $before_length bytes. After the update, profile length is $after_length</p>.";
				}
				else {
					echo "ERROR: Unable to process request to clear buffs for character = ".($_REQUEST['charactername'])."($characterid) because your profile lengths did not match. Please notify a GM.";
				}
			}
			else {
				echo "ERROR: Unable to retrieve character profile data for character  = ".($_REQUEST['charactername'])."($characterid). Please notify a GM.";
			}
		}
		else {
			echo "ERROR: Obtained an invalid character id (id = ".$characterid.").";
		}
	}
	else {
		echo "ERROR: Unable to retrieve data for character ".($_REQUEST['charactername']).".";
	}
}
?>
<br />
<br />
</body>
</html>
__________________
Read my developer notes at my blog.

Quote:
If it's not on IRC, it ain't l33t!
Reply With Quote
  #8  
Old 01-22-2007, 10:28 PM
number6
Sarnak
 
Join Date: Sep 2006
Posts: 62
Default

I reverted back to release 939 for now and the problem seems to have gone away judging from initial reports from the players. When I have time I'll look at some code diffs and see if I can work out what broke. Is this what the rest of you have done in order to sidestep the problem?

Paul.
Reply With Quote
  #9  
Old 01-23-2007, 03:34 AM
cavedude's Avatar
cavedude
The PEQ Dude
 
Join Date: Apr 2003
Location: -
Posts: 1,988
Default

The issue started in build 942. Using 941 seems to be safe, however since there are features in 942+ than PEQ requires, we are diligently trying to come up with a fix. Once we do, we'll post it here.
Reply With Quote
  #10  
Old 01-23-2007, 06:04 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

I spent my whole morning tracking this down and I think I have it fixed with the next version 945.
Reply With Quote
  #11  
Old 01-23-2007, 06:06 AM
cavedude's Avatar
cavedude
The PEQ Dude
 
Join Date: Apr 2003
Location: -
Posts: 1,988
Default

Thank you!
Reply With Quote
  #12  
Old 01-23-2007, 08:24 AM
solid11's Avatar
solid11
Discordant
 
Join Date: Dec 2004
Posts: 266
Default

Wooty woot woot
__________________
Reply With Quote
  #13  
Old 01-24-2007, 06:12 AM
number6
Sarnak
 
Join Date: Sep 2006
Posts: 62
Default

Many thanks - I've patched my server and so far, so good

Paul.
Reply With Quote
  #14  
Old 01-24-2007, 11:21 AM
Jibbatwinkers
Sarnak
 
Join Date: May 2006
Location: Cincinnati
Posts: 73
Default

thanks for the fix KLS Can enjoy all those other nice updates you put in 442 and 444 now !
__________________
Lead GM ~ Zeb
Zeb Server
ZebServer.com
Reply With Quote
  #15  
Old 02-24-2007, 02:53 PM
Wizardanim
Sarnak
 
Join Date: Jul 2005
Location: Super Top Secret
Posts: 64
Default

Was this issue resolved? Whenever i log into the game, the zone crashes, for any character in any zone... just happened with updating the exe files
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:21 PM.


 

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 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3