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 [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=79310 --- shadow/79310 2006-09-06 18:20:01.000000000 -0400 +++ shadow/79310.tmp.26373 2006-09-06 18:20:01.000000000 -0400 @@ -0,0 +1,110 @@ +Bug#: 79310 +Product: Mono: Runtime +Version: 1.1 +OS: +OS Details: +Status: NEW +Resolution: +Severity: +Priority: Major +Component: misc +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: Executing domains in different threads + +When creating domains from different threads, either an assert is hit or unhandled null +exceptions are thrown. This happens on osx ppc machines as well as osx intel machines. (I +haven't tested other platforms, but i presume it will behave the same) + + + +** ERROR **: file assembly.c: line 1400 (mono_assembly_load_from_full): assertion failed: +(image->assembly == NULL) + +or + +Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of +an object +in <0x0006c> System.Runtime.Serialization.Formatters.Binary.ObjectReader:RegisterObject +(Int64 objectId, System.Object objectInstance, System.Runtime.Serialization.SerializationInfo info, +Int64 parentObjectId, System.Reflection.MemberInfo parentObjectMemeber, System.Int32[] +indices) +in <0x000fc> System.Runtime.Serialization.Formatters.Binary.ObjectReader:ReadNextObject +(System.IO.BinaryReader reader) +in <0x000ec> System.Runtime.Serialization.Formatters.Binary.ObjectReader:ReadObjectGraph +(System.IO.BinaryReader reader, Boolean readHeaders, System.Object result, +System.Runtime.Remoting.Messaging.Header[] headers) +in <0x001b0> +System.Runtime.Serialization.Formatters.Binary.BinaryFormatter:NoCheckDeserialize +(System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler +handler) +in <0x00020> System.Runtime.Serialization.Formatters.Binary.BinaryFormatter:Deserialize +(System.IO.Stream serializationStream) +in <0x00080> System.Runtime.Remoting.Channels.CADSerializer:DeserializeObject +(System.IO.MemoryStream mem) +in <0x0012c> System.Runtime.Remoting.RemotingServices:GetDomainProxy +(System.AppDomain domain) +in <0x000cc> System.AppDomain:CreateDomain (System.String friendlyName, +System.Security.Policy.Evidence securityInfo, System.Ap + + +A test case can be downloaded here: +www.otee.dk/joe/thread_domain.zip +1. cd into the extracted folder +2. mono RunThis.exe + + + +Just in case c# sample is here: + +----- RunThis.cs +using System; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Runtime.CompilerServices; +using System.Threading; +class UnityDomainLoad +{ + static int gDomainCounter = 0; + + public static void ThreadProc() + { + System.Console.WriteLine("Starting Thread proc"); + + System.AppDomain m_Domain = null; + + m_Domain = System.AppDomain.CreateDomain("UnityRuntime " + gDomainCounter+ ++); + + System.Console.WriteLine("Done create domain"); + + m_Domain.ExecuteAssembly("ExecuteAssembly.exe"); + + System.Console.WriteLine("End Thread proc"); + } + + public static void Main () + { + for (int i=0;i<10;i++) + { + Thread t = new Thread(new ThreadStart(ThreadProc)); + t.Start(); + } + } +} +------- + +--- ExecuteAssembly.cs +public class ExecuteAssembly +{ + public static void Main () + { + System.Console.WriteLine("***Executing domain code"); + } +} + +---- _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
