View Single Post
  #2  
Old 04-27-2002, 08:16 AM
theCoder
Sarnak
 
Join Date: Jan 2002
Posts: 90
Default

I can't tell offhand what the problem is (I haven't had this problem, but I haven't tested 0.3.1 extensively -- finals coming up and all...)

Your world log is probably just reflecting the fact that the world server noticed the zone server had disappeared mysteriously (segfaulted) and was removing it from it's list of zone servers.

The fourth parameter to zone should only affect how zone connects to the world server, so it can be anything that can resolve to the host world is running on (localhost, 127.0.0.1, public IP, internal IP, etc). The NAT patch binds to the interface specified in the second parameter (just checked to make sure).

I'm not sure what exactly is going on from the strace. I looks like there's a Sleep() call that is failing. Really, it's usleep which is called unser the Linux build (see common/unix.cpp), which I guess calls nanosleep(?), which is failing. AFAIK, there are no direct calls in the code to either nanosleep or usleep (except through Sleep in unix.cpp). Based on the parameters to the call of nanosleep, it looks like the call was Sleep(1). There are 5 calls of Sleep(1) in zone/* and 2 in common/* (from grep). I'd bet that the problem is around one of them. Perhaps some debug printf's (or cout as seems to be the style in the emu) would be helpful in determining where it's happening. I know there are several debug print outs already in the code, but you have to turn the debug level up (I think at least one is debug_level in common/EQPacketManager.cpp). However, I'm not sure that those would help here since they seem to be debugs for the networking code.

Also, are you running 0.3.1, or the patch 0.3.1.1? Or another older version?
Reply With Quote