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 02-18-2008, 03:18 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default Player Character Ghosting (after player leaves game)

I have seen this issue with almost all emu servers I have played on over the past couple of years. Players will use /exit or /quit instead of /logging out, or they will crash to desktop and leave a ghost in game. Unless that player logs back in, their character will continue to stand there until the zone or server are reset or a GM does a #kick on the player. This is most apparent in more popular zones.

I have nexus setup as my server base and after a day of running the server, Nexus will have an average of 10-15 ghost characters when I get home and check it. My server peaks around 60+ players, and these ghosts definitely seem to take a toll on server performance. I know my server isn't the only one affected by them at this time.

I have searched these forums multiple times and have never even seen a dev mention or confirm the issue. I couldn't find any bugs listed for it, or anything good in server support. The few posts I seen that mentioned ghosting at all were unanswered posts.

I've tried setting the rulesets related to linkdeath and timeouts, but that makes no difference.

For some reason, these ghosts seem to Blink off and on. First you can see them, then they will disappear for a couple of seconds, and then reappear. The best way to tell if a player is a ghost is to try to inspect them by right clicking. If you get the con message, but no inspect window, they are definitely a ghost.

I remember playing on Zebuxoruk server in late 2006 and the ghost issue was initially a problem there. But once that server was updated to a certain version of code, the ghosting seemed to stop completely and the server seemed more stable. So, it seems that the ghosting issue was resolved at some point of the code releases, but it is definitely back.

My theory to this is that for some reason, the connections aren't being torn down after characters leave the world. This may only be an issue on Windows, but I haven't heard anyone confirm that Linux never ghosts players. The reason I think that connections aren't being torn down is because while I was troubleshooting another issue, I found that I was getting traffic from IP addresses that weren't even logged into my server anymore. I had an issue with high latency players causing my debug logs to be flooded, so I downloaded an IP blocker and setup a block for IPs that were causing the error. I found that even after the player had logged off, or after I #kicked them off, they would continue sending me traffic indefinitely until I rebooted my server. Even if I blocked the IP for a while and then unblocked it, the connection would still continue! I am beginning to suspect that these connections staying active might be the reason Windows servers need to be restarted so often to keep lag from reaching insane levels. If each connection did stay active even after people logged off, that would well explain why it would impact server performance over time. Having a couple hundred connections is enough to bog down almost any server.

Does anyone out there know a fix for this for Windows? Maybe there is a setting I am missing somewhere. If not, maybe this is something the Devs can look into if they get a chance.

Thanks
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #2  
Old 04-06-2008, 09:16 PM
moydock
Discordant
 
Join Date: Jun 2005
Posts: 286
Default

I see the same thing on my server. You can send tells to them, they show up on who all, and you can hit them, but you can't inspect them.
__________________
-Croup (the rogue)
Creator of Pandemic (PvP-Racewars)
Reply With Quote
  #3  
Old 04-06-2008, 09:46 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

If your server has a decent amount of players on it, the ghosting can cause real performance issues in a day or so. If you have any issues with it, I suggest trying my zone reset quest to clear out the ghosts regularly. You can add a zone resetter to every custom zone you have for maximum benefit. Here is the link to the post:

http://www.eqemulator.net/forums/showthread.php?t=24485
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #4  
Old 10-01-2008, 06:29 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I know this report is fairly old, but player ghosting is still an issue on Windows servers according to some of the admins I speak with regularly. I don't have any solution, but I just wanted to post some code here which is probably the cause of the problem. I don't understand what is being done at all in this, but this is where the disconnect is supposed to happen that I assume isn't happening when players are ghosted. Maybe someone with more experience can check this out sometime and see if anything stands out as a possible issue.


TCPConnection.cpp
Code:
void TCPConnection::FinishDisconnect() {
	MState.lock();
	if (connection_socket != INVALID_SOCKET && connection_socket != 0) {
		if (pState == TCPS_Connected || pState == TCPS_Disconnecting || pState == TCPS_Disconnected) {
			bool sent_something = false;
			SendData(sent_something);
		}
		pState = TCPS_Closing;
		shutdown(connection_socket, 0x01);
		shutdown(connection_socket, 0x00);
#ifdef WIN32
		closesocket(connection_socket);
#else
		close(connection_socket);
#endif
		connection_socket = 0;
		rIP = 0;
		rPort = 0;
		ClearBuffers();
	}
	pState = TCPS_Disconnected;
	MState.unlock();
}

void TCPConnection::Disconnect() {
	MState.lock();
	if(pState == TCPS_Connected || pState == TCPS_Connecting) {
		pState = TCPS_Disconnecting;
	}
	MState.unlock();
}
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #5  
Old 10-01-2008, 09:02 AM
Angelox
AX Classic Developer
 
Join Date: May 2006
Location: filler
Posts: 2,049
Default

Here's some thoughts I have on this, I have a windows server, but not many players to test with.
Could it be related to when they '/q' the game or LD? a lot of players don't '/camp', they '/q'.
Also, could it be related to the client playing on the same server machine? < maybe this creates some sort of lag/missed packets that creates this problem.
One thing would be to temporarily disable the '/q' command in the code, and instead place a message like 'please camp out normally, as we are testing for a PC ghosting bug'.
You could then see if at least this problems diminishes.
Reply With Quote
  #6  
Old 10-01-2008, 12:32 PM
ChaosSlayer
Demi-God
 
Join Date: May 2007
Posts: 1,032
Default

Quote:
Originally Posted by Angelox View Post
Could it be related to when they '/q' the game or LD? a lot of players don't '/camp', they '/q'.
these guys are strange. I would never use /q comand on a legal char - what if mob spawns right on top of me? Thats a garanteed death
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 07:40 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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3