[Mono-bugs] [Bug 50356][Maj] New - SoapSerializer.Deserialize kills the mono

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Thu, 30 Oct 2003 12:10:21 -0500 (EST)


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 imitko@openlinksw.co.uk.

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

--- shadow/50356	2003-10-30 12:10:20.000000000 -0500
+++ shadow/50356.tmp.5988	2003-10-30 12:10:21.000000000 -0500
@@ -0,0 +1,102 @@
+Bug#: 50356
+Product: Mono/Runtime
+Version: unspecified
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: Unknown
+Priority: Major
+Component: misc
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: imitko@openlinksw.co.uk               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: SoapSerializer.Deserialize kills the mono
+
+Description of Problem:
+
+having a simple program that just do deserialization from SOAP1.1 message
+to an object make so mono to crash.
+
+
+Steps to reproduce the problem:
+1. compile the following C# program with 
+
+mcs /r:System.Runtime.Serialization.Formatters.Soap /r:System.Management 
+/r:System.Web des.cs
+---- des.cs ----
+using System;
+using System.IO;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Soap;
+using System.Xml.Serialization;
+
+public class des {
+  public static void Main (String[] argc)
+    {
+      //Console.WriteLine (argc[0]);
+      IFormatter fmt = new SoapFormatter();
+      System.IO.MemoryStream mem_strim = new System.IO.MemoryStream ();
+      byte [] barr;
+      String ent = argc[0];
+
+      barr = new byte[ent.Length];
+      for (int i = 0; i < ent.Length; i++)
+        {
+          barr[i] = (byte) Convert.ChangeType (ent[i], typeof (byte));
+        }
+
+      mem_strim.Seek(0, SeekOrigin.Begin);
+      mem_strim.Write (barr, 0, (int) barr.Length);
+      mem_strim.Seek(0, SeekOrigin.Begin);
+      Object org_obj = fmt.Deserialize(mem_strim);
+    }
+}
+
+
+2. have a soap message in a file  req1.xml
+
+<SOAP-ENV:Envelope
+xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <SOAP-ENV:Body>
+    <m:echoString xmlns:m="http://soapinterop.org/"
+SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
+    </m:echoString>
+  </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
+
+
+
+3. run the program with soap message
+
+$ mono des.exe "`cat req1.xml`"
+
+** ERROR **: file appdomain.c: line 850
+(ves_icall_System_AppDomain_LoadAssembly): assertion failed: (assRef->name
+!= NULL)
+aborting...
+Killed
+
+
+Actual Results:
+
+ABORT
+
+
+Expected Results:
+
+return an object or error.
+
+How often does this happen? 
+
+ALWAYS
+
+Additional Information:
+
+if content of the SOAP:body is empty the result is an runtime error.