logo logo

 Back to main page

The NWNX Community Forum

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 
Beta xp_bugfix release to reduce *client* transition crashes

 
Post new topic   Reply to topic    nwnx.org Forum Index -> Development
View previous topic :: View next topic  
Author Message
Skywing



Joined: 03 Jan 2008
Posts: 321

PostPosted: Sun Oct 18, 2009 7:42    Post subject: Beta xp_bugfix release to reduce *client* transition crashes Reply with quote

I have a beta 1.0.4 release of xp_bugfix which attempts to work around one of the more prevelant causes of client transition crashes and transition hangs: The client's view of the server to client zlib dictionary gets out of sync with the server's view.

Note that there may be other transition crash or hang issues that aren't addressed by the disable compression option. It is not a generic cure-all, but an attempt to address some of the more common crashes that I have diagnosed.

This causes incoming compressed messages to be decompressed to garbage. As a result, the client hits a number of client side bugs relating to crashing on malformed packets (AV on wild pointer near 00892edc is one of the more common symptoms).

The client may also fail to complete a transition (get stuck on the zone loading screen) because the GameObjUpdate.ControlObject message isn't recognized due to damage from decompression with a wrong zlib dictionary.

The client may also stop seeing nearby creatures, or may see garbled text from nearby players who send long text messages.

This xp_bugfix beta release adds support to turn off server to client data compression in an attempt to reduce the impact of this bug. Client to server compression remains in effect (and cannot be turned off without a client-side patch), but is not the problem here.

The binaries for this release can be found here:

Important note: Starting with xp_bugfix 1.0.3 (and including this 1.0.4 beta release), you must install an updated Visual C++ 2005 SP1 CRT. (Pick the vcredist_x86.exe download.) If you do not update your VC2005 CRT, xp_bugfix will silently fail to load.

(1.0.4) binaries + symbols for NWN2 1.0.23.1763 / 1.0.23.1765: http://www.nynaeve.net/Skywing/nwn2/01231763/xp_bugfix104.zip

Once installing 1.0.4, you must create xp_bugfix.ini in the NWNX4 installation directory, and add the following option:

Code:
DisableServerCompression = 1


By default, server compression is kept enabled. You must set the above option in your xp_bugfix.ini to use the new behavior. Otherwise, this release functions identically to xp_bugfix 1.0.3.

Once you have done this, you should see the following message on server startup in xp_bugfix.txt:

Code:
* Disabling server to client compression.


It is difficult to quantitatively say for certain that transition crashes are reduced, but I believe that this may have a shot at reducing the most common crash I have seen from analyzing community crash reports.

Should you choose to help test this update, please do so over a perod of time long enough to gather useful data (e.g. one week or greater) and attempt to gather information about frequency of transition crashes reported by players over that time. It would be preferable to attempt to acquire "before" and "after" statistics if your player base will work with you on this. It would be very helpful to hear if disabling server to client compression is improving the quality of experience for your players, so please post back if you do try the beta release.

Note: Disabling server compression may significantly increase the amount of data that must be sent over the wire when logging on to the server (the entire BIC file is sent) or during area transitions. Unfortunately, there is a trade off between stability and network efficiency here. Because the compression bug likely resides in the client, it may be difficult to patch it and keep compression without requiring all players to have a client-side patch.

If disabling compression proves effective at improving the client experience, I will look at adding more advanced features such as only enabling compression for BIC transfers at the start of a session to reduce client impact. (I expect that BIC transfers (login/character creation) see most of the real world benefit from compression, with other traffic only marginally benefiting.)
Back to top
View user's profile Send private message
robertharris



Joined: 29 Apr 2008
Posts: 3

PostPosted: Mon Oct 19, 2009 20:23    Post subject: Reply with quote

Skywing,

I have the beta 1.0.4 release of xp_bugfix running on Dasaria.

We've been tracking transition crashing through scripting on Dasaria for years. In a couple of weeks, I'll have enough data collected to to tell you empirically how much your plugin has reduced transition crashing.

Thanks again you for your contributed contributions to the NWN2 community.

Rob
Back to top
View user's profile Send private message
Skywing



Joined: 03 Jan 2008
Posts: 321

PostPosted: Tue Oct 20, 2009 4:27    Post subject: Reply with quote

Great, it would be very nice to have some hard, non-subjective data here. (Make sure that you set the disable compression config option and confirm that it shows as acknowledged in the xp_bugfix log though!)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    nwnx.org Forum Index -> Development All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group