[Mono-bugs] [Bug 80593][Nor] New - Endian issue when joining a UDP multicast group

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Tue Jan 23 22:16:35 EST 2007


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by monobugs at sharifibrahim.com.

http://bugzilla.ximian.com/show_bug.cgi?id=80593

--- shadow/80593	2007-01-23 22:16:34.000000000 -0500
+++ shadow/80593.tmp.6157	2007-01-23 22:16:35.000000000 -0500
@@ -0,0 +1,78 @@
+Bug#: 80593
+Product: Mono: Runtime
+Version: 1.2
+OS: GNU/Linux [Other]
+OS Details: PowerPC
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Normal
+Component: io-layer
+AssignedTo: dick at ximian.com                            
+ReportedBy: monobugs at sharifibrahim.com               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: Endian issue when joining a UDP multicast group
+
+Description of Problem:
+It appears Mono may have a byte order bug when attempting to join UDP
+multicast groups on big-endian architectures.  I originally filed this on
+the Debian BTS (http://bugs.debian.org/406909) but have determined that the
+issue applies to Mono in FC5 as well so am filing it here.
+
+Steps to reproduce the problem:
+1. Compile and run the test program:
+
+namespace Test
+{
+ 	using System.Net;
+ 	using System.Net.Sockets;
+ 	class Test
+ 	{
+ 		static void Main()
+ 		{
+			Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
+ProtocolType.Udp);
+			socket.SetSocketOption(SocketOptionLevel.Socket,
+SocketOptionName.ReuseAddress, 1);
+			socket.Bind(new IPEndPoint(IPAddress.Any, 1900));
+			socket.SetSocketOption(SocketOptionLevel.IP,
+SocketOptionName.AddMembership, new
+MulticastOption(IPAddress.Parse("239.255.255.250")));
+			socket.Close();
+ 		}
+ 	}
+}
+
+Actual Results:
+Works on .NET and Mono on i386, fails on powerpc with the exception:
+
+Unhandled Exception: System.Net.Sockets.SocketException: Invalid arguments
+  at System.Net.Sockets.Socket.SetSocketOption (SocketOptionLevel level,
+SocketOptionName name, System.Object opt_value) [0x00000]
+  at Test.Test.Main () [0x00000]
+
+
+Expected Results:
+Run without error on all architectures.
+
+How often does this happen? 
+Every time on powerpc.
+
+Additional Information:
+I found a multicast program written in C and was able to run it
+successfully.  Using strace on both it and Mono revealed that Mono's call
+to setsockopt was using the wrong byte order for the multicast address:
+
+setsockopt(7, SOL_IP, IP_ADD_MEMBERSHIP, \372\377\377\357\0\0\0\0\0\0\0\0",
+12) = -1 EINVAL (Invalid argument)
+
+I confirmed this by modifying the C# test program to use the (invalid)
+multicast address 250.255.255.239.  The compiled executable then worked on
+powerpc but failed on i386 Mono and .NET.
+
+I've tracked down the issue to mono/metadata/socket-io.c but don't know the
+best way to solve it there.  In any case, if my analysis is correct, then
+bug 75057 is probably a manifestation of this.


More information about the mono-bugs mailing list