[Mono-bugs] [Bug 69181][Blo] New - Bug in AppDomain.GetAssemblies

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Sat, 6 Nov 2004 10:15:19 -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 mono@evain.net.

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

--- shadow/69181	2004-11-06 10:15:19.000000000 -0500
+++ shadow/69181.tmp.8654	2004-11-06 10:15:19.000000000 -0500
@@ -0,0 +1,63 @@
+Bug#: 69181
+Product: Mono: Class Libraries
+Version: 1.1
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Blocker
+Component: CORLIB
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: mono@evain.net               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: Bug in AppDomain.GetAssemblies
+
+Description of Problem:
+AppDomain.GetAssemblies() called on another AppDomain that the current one
+always throws an exception :
+
+Type System.Reflection.Emit.AssemblyBuilder is not marked as Serializable
+and does not implement ISerializable.
+in <0x005a4>
+System.Runtime.Remoting.Proxies.RealProxy:PrivateInvoke(System.Runtime.Remoting.Proxies.RealProxy,System.Runtime.Remoting.Messaging.IMessage,System.Exception&,object[]&)
+
+Steps to reproduce the problem:
+1. Create a new AppDomain
+2. Call GetAssemblies() on it
+
+Actual Results:
+An exception is thrown
+
+Expected Results:
+An array of assembly
+
+How often does this happen? 
+Always
+
+Additional Information:
+
+You can reproduce the problem with the code below :
+
+// mcs test.cs
+
+using System;
+using System.Reflection;
+
+public class Consumer {
+    public static void Main() {
+        try {
+            AppDomain ad = AppDomain.CreateDomain("LoadingDomain",
+                AppDomain.CurrentDomain.Evidence,
+AppDomain.CurrentDomain.SetupInformation);
+            Assembly[] asms = ad.GetAssemblies();
+            AppDomain.Unload(ad);
+        } catch (Exception e) {
+            Console.WriteLine(e.Message);
+            Console.WriteLine(e.StackTrace);
+        }
+    }
+}