[Mono-bugs] [Bug 80392][Wis] New - AsyncResult broken

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Thu Dec 28 22:26:55 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 alan.mcgovern at gmail.com.

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

--- shadow/80392	2006-12-28 22:26:55.000000000 -0500
+++ shadow/80392.tmp.11697	2006-12-28 22:26:55.000000000 -0500
@@ -0,0 +1,61 @@
+Bug#: 80392
+Product: Mono: Class Libraries
+Version: 1.2
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Wishlist
+Component: CORLIB
+AssignedTo: mono-bugs at ximian.com                            
+ReportedBy: alan.mcgovern at gmail.com               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: AsyncResult broken
+
+An invalid operation exception should be thrown when i pass an AsyncResult
+from one object into the EndXXX of another object. Mono doesn't care. This
+can be a very bad thing.
+
+Run the attached testcase. In MS.NET an InvalidOperation exception is
+thrown on the call to EndRead as i passed in the wrong async result.
+
+using System;
+using System.IO;
+class Borked
+{
+    static void Main(string[] args)
+    {
+        byte[] data = System.Text.Encoding.ASCII.GetBytes("This is my
+really long test string in which to test async reading with");
+        using (FileStream s = File.Create("tempFile.temp"))
+            for (int i = 0; i < 10000; i++)
+                s.Write(data, 0, data.Length);
+
+        byte[] buffer1 = new byte[102400];
+        byte[] buffer2 = new byte[102400];
+        FileStream s1 = new FileStream("tempFile.temp", FileMode.Open,
+FileAccess.Read);
+        FileStream s2 = new FileStream("tempFile.temp", FileMode.Open,
+FileAccess.Read);
+
+        IAsyncResult result1 = s1.BeginRead(buffer1, 0, 102400, null, null);
+        IAsyncResult result2 = s2.BeginRead(buffer2, 0, 102400, null, null);
+        try
+        {
+            Console.WriteLine("Bytes read: " + s2.EndRead(result1));
+        }
+        catch (Exception ex)
+        {
+            Console.WriteLine(ex);
+        }
+        s1.Dispose();
+        s2.Dispose();
+        File.Delete("tempFile.temp");
+        Console.WriteLine("You should have seen an exception");
+        Console.ReadLine();
+    }
+}


More information about the mono-bugs mailing list