[Mono-bugs] [Bug 80331][Wis] New - System.Xml hangs if you insert a node before itself.

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Wed Dec 20 13:11:35 EST 2006


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 jonpryor at vt.edu.

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

--- shadow/80331	2006-12-20 13:11:35.000000000 -0500
+++ shadow/80331.tmp.12617	2006-12-20 13:11:35.000000000 -0500
@@ -0,0 +1,85 @@
+Bug#: 80331
+Product: Mono: Class Libraries
+Version: unspecified
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Wishlist
+Component: Sys.XML
+AssignedTo: atsushi at ximian.com                            
+ReportedBy: jonpryor at vt.edu               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: System.Xml hangs if you insert a node before itself.
+
+Please fill in this template when reporting a bug, unless you know what you
+are doing.
+Description of Problem:
+
+It's easy to get "hangs" (infinite looping, 100% CPU usage) with System.Xml
+if you insert a node before itself.
+
+Steps to reproduce the problem:
+1. Save the following program as `rx.cs':
+
+	using System;
+	using System.Xml;
+
+	class Test {
+		public static void Main ()
+		{
+			XmlDocument d = new XmlDocument ();
+			XmlElement r = d.CreateElement ("Docs");
+			d.AppendChild (r);
+
+			XmlElement s = Create (d, "param", "pattern");
+			s.AppendChild (Create (d, "para", "insert text here"));
+
+			r.AppendChild (s);
+			r.AppendChild (Create (d, "param", "pattern"));
+			r.AppendChild (Create (d, "param", "pattern"));
+			r.PrependChild (s);
+
+			Console.WriteLine ("OuterXml=" + d.OuterXml);
+		}
+
+		private static XmlElement Create (XmlDocument d, string name, string param)
+		{
+			XmlElement e = d.CreateElement (name);
+			e.SetAttribute ("name", param);
+			return e;
+		}
+	}
+
+2. Compile it: mcs rx.cs
+3. Run it: mono rx.exe
+
+Actual Results:
+
+No output, CPU at 100%.
+
+Expected Results:
+
+Either:
+
+1. An exception stating that you shouldn't insert a node before itself.
+
+-or-
+
+2. InsertBefore() silently ignoring an attempt to insert a node before
+itself, resulting in the output:
+
+OuterXml=<Docs><param name="pattern"><para name="insert text here"
+/></param><param name="pattern" /><param name="pattern" /></Docs>
+
+How often does this happen? 
+
+Always.
+
+Additional Information:
+
+Tested on Mono 1.1.13.2, 1.1.13.7, and svn-HEAD (circa 2006-12-18).


More information about the mono-bugs mailing list