Re-sending to get it posted to the maillist (really don't know how these work, or how the threading is determined under http://mail.python.org/pipermail/pythondotnet/2007-November/thread.html ).
---- Ok, I've submitted the patches. Note that I'm purely Windows here using the Microsoft .NET framework, so I'm not sure what the fallout is on mono or other platforms. The meat of the changes boils down to two lines in the clrmodule file, but I gotta say it was fun getting back to the IL:). That said, here's the details for the two crashes I'm seeing: My 32-bit machine is running XP Pro, and my 64-bit machine is running Vista64 Business. Both machines have VS2005 and VS2008beta2 installed, so I have .NET frameworks 2.0, 3.0, and 3.5. In runtests.py, the two offending scripts are 'test_event' and 'test_delegate' (lines 36 and 38). I have to comment out one to see the other run, since they both cause hard crashes in python.exe with an unhandled exception. In all cases below, I'm running the precompiled python 2.5.1 downloaded from python.org. For the 32-bit runs, I'm using a release build of clr.pyd that I compiled under VS2005 from a download of pythonnet-2.0-alpha2.zip from SourceForge. For the 64-bit runs, I'm running a release build of clr.pyd compiled under VS2005 based on the patches I just submitted. The "only" difference between the 32-bit and 64-bit exception traces is that the 64-bit version has an extra entry in the call stack (a call to Python.Runtime.CodeGenerator.DefineType(String name, Type basetype)). Any ideas, or need any additional details that I can provide? :) Cheers, John **** 32-bit, test_event **** Unhandled Exception: System.TypeInitializationException: The type initializer for 'Python.Runtime.CodeGenerator' threw an exception. ---> System.InvalidCastException: Unable to cast object of type 'System.Reflection.Module' to type 'System.Reflection.Emit.ModuleBuilder'. at System.Reflection.Emit.AssemblyBuilderData.GetInMemoryAssemblyModule() at System.AppDomain.InternalDefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, String dir, Evidence evidence, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark& stackMark, IEnumerable`1 unsafeAssemblyAttributes) at System.AppDomain.DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) at Python.Runtime.CodeGenerator..cctor() --- End of inner exception stack trace --- at Python.Runtime.DelegateManager.GetDispatcher(Type dtype) at Python.Runtime.DelegateManager.GetDelegate(Type dtype, IntPtr callable) at Python.Runtime.EventObject.AddEventHandler(IntPtr target, IntPtr handler) at Python.Runtime.EventBinding.nb_inplace_add(IntPtr ob, IntPtr arg) **************************** **** 64-bit, test_event **** Unhandled Exception: System.TypeInitializationException: The type initializer for 'Python.Runtime.CodeGenerator' threw an exception. ---> System.InvalidCastException: Unable to cast object of type 'System.Reflection.Module' to type 'System.Reflection.Emit.ModuleBuilder'. at System.Reflection.Emit.AssemblyBuilderData.GetInMemoryAssemblyModule() at System.AppDomain.InternalDefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, String dir, Evidence evidence, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark& stackMark, IEnumerable`1 unsafeAssemblyAttributes) at System.AppDomain.DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) at Python.Runtime.CodeGenerator..cctor() --- End of inner exception stack trace --- at Python.Runtime.CodeGenerator.DefineType(String name, Type basetype) at Python.Runtime.DelegateManager.GetDispatcher(Type dtype) at Python.Runtime.DelegateManager.GetDelegate(Type dtype, IntPtr callable) at Python.Runtime.EventObject.AddEventHandler(IntPtr target, IntPtr handler) at Python.Runtime.EventBinding.nb_inplace_add(IntPtr ob, IntPtr arg) **************************** **** 32-bit, test_delegate **** Unhandled Exception: System.TypeInitializationException: The type initializer for 'Python.Runtime.CodeGenerator' threw an exception. ---> System.InvalidCastException: Unable to cast object of type 'System.Reflection.Module' to type 'System.Reflection.Emit.ModuleBuilder'. at System.Reflection.Emit.AssemblyBuilderData.GetInMemoryAssemblyModule() at System.AppDomain.InternalDefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, String dir, Evidence evidence, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark& stackMark, IEnumerable`1 unsafeAssemblyAttributes) at System.AppDomain.DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) at Python.Runtime.CodeGenerator..cctor() --- End of inner exception stack trace --- at Python.Runtime.DelegateManager.GetDispatcher(Type dtype) at Python.Runtime.DelegateManager.GetDelegate(Type dtype, IntPtr callable) at Python.Runtime.DelegateObject.tp_new(IntPtr tp, IntPtr args, IntPtr kw) at e__NativeCall.Call_3(IntPtr , IntPtr , IntPtr , IntPtr ) at Python.Runtime.MetaType.tp_call(IntPtr tp, IntPtr args, IntPtr kw) **************************** **** 64-bit, test_delgate **** Unhandled Exception: System.TypeInitializationException: The type initializer for 'Python.Runtime.CodeGenerator' threw an exception. ---> System.InvalidCastException: Unable to cast object of type 'System.Reflection.Module' to type 'System.Reflection.Emit.ModuleBuilder'. at System.Reflection.Emit.AssemblyBuilderData.GetInMemoryAssemblyModule() at System.AppDomain.InternalDefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, String dir, Evidence evidence, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark& stackMark, IEnumerable`1 unsafeAssemblyAttributes) at System.AppDomain.DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) at Python.Runtime.CodeGenerator..cctor() --- End of inner exception stack trace --- at Python.Runtime.CodeGenerator.DefineType(String name, Type basetype) at Python.Runtime.DelegateManager.GetDispatcher(Type dtype) at Python.Runtime.DelegateManager.GetDelegate(Type dtype, IntPtr callable) at Python.Runtime.DelegateObject.tp_new(IntPtr tp, IntPtr args, IntPtr kw) at e__NativeCall.Call_3(IntPtr , IntPtr , IntPtr , IntPtr ) at Python.Runtime.MetaType.tp_call(IntPtr tp, IntPtr args, IntPtr kw) **************************** -----Original Message----- From: Christian Heimes [mailto:[EMAIL PROTECTED] Sent: Sunday, November 18, 2007 5:38 PM To: John Burnett Cc: Brian Lloyd Subject: Re: [Python.NET] Added 64-bit support, delegates/events broken? John Burnett wrote: > I've made a few changes necessary to make python.net 64-bit compatible. I can check in the changes on Monday (unless I need an account set up first?) I also fixed a broken test case wrt. exceptions. Neither Brian nor me have a 64bit CPU. Although the code tries to be 64bit compatible neither of us is able to verify the code. Thanks for your work! :) You cannot check in the code yourself. Can you please make two patches, one for the 64bit and one for the unit tests, and post them in the bug and feature tracker at sf.net? Brian: I still don't have developer and technician roles in the bug tracker. Can you please raise my level for the tracker, too? > That said, I'm getting unrelated hard crashes when running the test cases for either events or delegates (i.e. the whole test harness crashes out). Is anyone else seeing this, or is it something peculiar with my setup (it's happening in both 32 and 64 bit Vista, compiled under VS2005). I can post details on Monday if necessary... I haven't seen hard crashes for a while. I'm using VS 2005 and Mono 1.2.4 for testing. Please post some details. Christian _________________________________________________ Python.NET mailing list - PythonDotNet@python.org http://mail.python.org/mailman/listinfo/pythondotnet