Go Back   RunUO - Ultima Online Emulation > RunUO > Server Support on Mono

Server Support on Mono Forum dedicated to RunUO 2.0 on Mono.

Reply
 
Thread Tools Display Modes
Old 03-27-2008, 07:05 AM   #1 (permalink)
Newbie
 
Join Date: Jan 2008
Posts: 15
Send a message via ICQ to KonssnoK Send a message via MSN to KonssnoK Send a message via Skype™ to KonssnoK
Default Mono Custom Gumps Problem?

Hi all, i'm using Runuo on mono 1.9 and on XP with .net.

I have no prob running on XP

but instead using mono i can't use customized gumps apart for the first i open..

Example :
logged, [admin -> gump appears.
[who [add .. does not appear anymore.. ( even if i retype [admin )

Vendors gumps work.

in Xp have no prob.

Help
KonssnoK is offline   Reply With Quote
Old 04-29-2008, 10:30 AM   #2 (permalink)
Lurker
 
Join Date: Mar 2004
Age: 38
Posts: 6
Default

Was there a fix for this? I'm having the same problem.

1st time ok, 2nd time chinese characters, 3rd time client crash.

No error on console usually, when I keep trying to load gumps I get, Client: 124.169.*.*: Too much data pending, disconnecting...
evilgoat-hybrid is offline   Reply With Quote
Old 04-29-2008, 10:39 AM   #3 (permalink)
Lurker
 
Join Date: Mar 2004
Age: 38
Posts: 6
Default

Nevermind, I switched to mono 1.9 and it fixed this.
evilgoat-hybrid is offline   Reply With Quote
Old 04-29-2008, 06:18 PM   #4 (permalink)
Newbie
 
Join Date: Jan 2008
Posts: 15
Send a message via ICQ to KonssnoK Send a message via MSN to KonssnoK Send a message via Skype™ to KonssnoK
Default

Well if you are sure that v1.9 fix it we can close thread
KonssnoK is offline   Reply With Quote
Old 05-13-2008, 03:46 PM   #5 (permalink)
Newbie
 
Scriptiz's Avatar
 
Join Date: Oct 2006
Location: Belgium
Posts: 37
Send a message via MSN to Scriptiz
Default

It was the same for me (Mono 1.2.6) but it was an error due to the bad reference to libz.

This command solved it :

Code:
sudo ln -s /usr/lib/libz.so.1 /usr/lib/libz.so
It create a symbolic link to libz.so.1 on the name of libz.so
Scriptiz is offline   Reply With Quote
Old 08-02-2008, 12:21 PM   #6 (permalink)
Lurker
 
Join Date: May 2007
Posts: 1
Default

I'm using Mono 1.9.1 on Debian Lenny and i have the same problem with the gumps. I can open one gump and afterwards no more. When i spam for example Admin i receive a "Compression buffer overflowed on packet 0xDD ('DisplayGumpPacked') (length=0) and the client is disconnected.

If it is libz related - i'm using libz.so.1.2.3.3
Any suggestions?

Last edited by ZackCrick; 08-02-2008 at 12:30 PM.
ZackCrick is offline   Reply With Quote
Old 08-03-2008, 07:36 AM   #7 (permalink)
Newbie
 
Scriptiz's Avatar
 
Join Date: Oct 2006
Location: Belgium
Posts: 37
Send a message via MSN to Scriptiz
Default

This must work for you ZackCrick :
Code:
sudo ln -s /usr/lib/libz.so.1.2.3.3 /usr/lib/libz.so
Before check if libz.so.1.2.3.3 is the real file that you have :
Code:
cd /usr/lib/
ls libz*
It will return you all the files that begin with libz so you can see on wich one you have to do the symbolic link.
Scriptiz is offline   Reply With Quote
Old 08-03-2008, 09:04 AM   #8 (permalink)
Lurker
 
Join Date: Oct 2002
Posts: 8
Default

As far as I know the symbolic links do exist already:

Code:
/usr/lib# ls -l libz*
lrwxrwxrwx 1 root root    18  2. Aug 20:19 libz.so -> /usr/lib/libz.so.1
lrwxrwxrwx 1 root root    15  1. Aug 17:45 libz.so.1 -> libz.so.1.2.3.3
-rw-r--r-- 1 root root 93504  6. Apr 20:18 libz.so.1.2.3.3
The reason has to be something else.

The Runuo.exe is compiled from SVN 300 with Mono 1.9.1 using the 07Feb08 RunUOForge fixes.
And an additional fix to the CastConvertList<TInput,TOutput> in Utility.cs.

Last edited by Lord_Helmchen; 08-03-2008 at 09:15 AM. Reason: compile info
Lord_Helmchen is offline   Reply With Quote
Old 08-04-2008, 07:52 AM   #9 (permalink)
Lurker
 
Join Date: Oct 2002
Posts: 8
Default

I did some further testing. It is clearly ZLib (libz) related.
I disabled the compressed packets in Gump.cs and everything gump related works like a charm.
So I checked what else the compression is used for and wether it is messed up aswell.
Testing custom houses made it obvious, that there has to be some serious problem with libz, because it ain't visible in the client.

I get the following error in the console, when placing a custom house:
Code:
OnDelete()ZLib error: BufferError (#-5)
ZLib error: BufferError (#-5)
Any help on how this might be solved is appreciated.

*edit
might be related:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=258087

*edit2
It's a 64 Bit AMD CPU.

Last edited by Lord_Helmchen; 08-04-2008 at 08:25 AM.
Lord_Helmchen is offline   Reply With Quote
Old 08-06-2008, 12:30 PM   #10 (permalink)
Lurker
 
Join Date: Oct 2002
Posts: 8
Default

I found some more information on the error in the log files:

compression_overflow.log
Code:
02.08.2008 20:28:46 Warning: Compression buffer overflowed on packet 0xDD ('DisplayGumpPacked') (length=0)
   at Server.Network.Packet.InternalCompile(Boolean compress)
   at Server.Network.Packet.Compile(Boolean compress, Int32 ByRef length)
   at Server.Network.NetState.Send(Server.Network.Packet p)
   at Server.Gumps.Gump.SendTo(Server.Network.NetState state)
   at Server.Mobile.SendGump(Server.Gumps.Gump g, Boolean throwOnOffline)
   at Server.Mobile.SendGump(Server.Gumps.Gump g)
   at Server.Gumps.AdminGump.Admin_OnCommand(Server.Commands.CommandEventArgs e)
   at Server.Commands.CommandSystem.Handle(Server.Mobile from, System.String text, MessageType type)
   at Server.Mobile.DoSpeech(System.String text, System.Int32[] keywords, MessageType type, Int32 hue)
   at Server.Mobiles.PlayerMobile.DoSpeech(System.String text, System.Int32[] keywords, MessageType type, Int32 hue)
   at Server.Network.PacketHandlers.UnicodeSpeech(Server.Network.NetState state, Server.Network.PacketReader pvSrc)
   at Server.Network.MessagePump.HandleReceive(Server.Network.NetState ns)
   at Server.Network.MessagePump.Slice()
   at Server.Core.Main(System.String[] args)
null_send.log
Code:
02.08.2008 20:28:46 Client: 192.168.191.24: null buffer send, disconnecting...
   at Server.Network.NetState.Send(Server.Network.Packet p)
   at Server.Gumps.Gump.SendTo(Server.Network.NetState state)
   at Server.Mobile.SendGump(Server.Gumps.Gump g, Boolean throwOnOffline)
   at Server.Mobile.SendGump(Server.Gumps.Gump g)
   at Server.Gumps.AdminGump.Admin_OnCommand(Server.Commands.CommandEventArgs e)
   at Server.Commands.CommandSystem.Handle(Server.Mobile from, System.String text, MessageType type)
   at Server.Mobile.DoSpeech(System.String text, System.Int32[] keywords, MessageType type, Int32 hue)
   at Server.Mobiles.PlayerMobile.DoSpeech(System.String text, System.Int32[] keywords, MessageType type, Int32 hue)
   at Server.Network.PacketHandlers.UnicodeSpeech(Server.Network.NetState state, Server.Network.PacketReader pvSrc)
   at Server.Network.MessagePump.HandleReceive(Server.Network.NetState ns)
   at Server.Network.MessagePump.Slice()
   at Server.Core.Main(System.String[] args)
If I understood that correctly then Zlib return the "Buffer Error" when it is passed an empty buffer. And that this behavior is new since a few versions.

Last edited by Lord_Helmchen; 08-06-2008 at 12:32 PM.
Lord_Helmchen is offline   Reply With Quote
Old 08-08-2008, 09:31 AM   #11 (permalink)
Lurker
 
Join Date: Oct 2002
Posts: 8
Default

I got it.
It's a compatibility issue between windows and unix.
Koders Code Search: ZLib.cs - C# - GPL
gave me the idea on what to do.

I edited Compression.cs in the following way:

Code:
//...

public sealed class CompressorUnix : ICompressor {
		[DllImport( "libz" )]
		private static extern string zlibVersion();

		[DllImport( "libz" )]
		private static extern ZLibError compress( byte[] dest, ref long destLength, byte[] source, int sourceLength );

		[DllImport( "libz" )]
		private static extern ZLibError compress2( byte[] dest, ref long destLength, byte[] source, int sourceLength, ZLibQuality quality );

		[DllImport( "libz" )]
		private static extern ZLibError uncompress( byte[] dest, ref long destLen, byte[] source, int sourceLen );

		public CompressorUnix() {
		}

		public string Version {
			get {
				return zlibVersion();
			}
		}

		public ZLibError Compress( byte[] dest, ref int destLength, byte[] source, int sourceLength ) {
            long d = destLength;
            ZLibError ret = compress( dest, ref d, source, sourceLength );
            destLength = (int)d;
            return ret;
		}

		public ZLibError Compress( byte[] dest, ref int destLength, byte[] source, int sourceLength, ZLibQuality quality ) {
            long d = destLength;
            ZLibError ret = compress2( dest, ref d, source, sourceLength, quality );
            destLength = (int)d;
            return ret;
		}

		public ZLibError Decompress( byte[] dest, ref int destLength, byte[] source, int sourceLength ) {
            long d = destLength;
            ZLibError ret = uncompress( dest, ref d, source, sourceLength );
            destLength = (int)d;
            return ret;
		}
	}

//...
I noticed, that without a user name and pass I am not able to commit to the svn.
But I think it would make a valuable addition.
Lord_Helmchen is offline   Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

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
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 RC5