http://bugzilla.novell.com/show_bug.cgi?id=583501
http://bugzilla.novell.com/show_bug.cgi?id=583501#c0 Summary: generic sharing causes crash on some dynamically generated method(?) Classification: Mono Product: Mono: Runtime Version: SVN Platform: Other OS/Version: Other Status: NEW Severity: Minor Priority: P5 - None Component: generics AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- Generic sharing seems to report some mysterious error as compared to when GS is disabled. The problematic type in use is dynamically generated by SRE and has insufficient interface implementation. When GS is disabled, it exactly reports what's missing. With GS enabled, the runtime just crashes reporting assertion failure. The example repro requires r152519 of mcs/class/System.ServiceModel (this may be fixed by having "correct" implementation of the problematic type). Repro: The example repro uses WCF client proxy, and happens only when you build System.ServiceModel.dll with -/d:USE_OD_REFERENCE_IN_PROXY option. So, add the compiler option to LIB_MCS_FLAGS in the Makefile and build it first. Then compile and run below (it is taken from our CallbackBehaviorAttributeTest): // ---- repro ---- using System; using System.Threading; using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Description; class Test { public static bool CallbackSent, CallbackReceived; public static void Main () { ServiceHost eventServiceHost = new ServiceHost (typeof (GreetingsService)); NetTcpBinding tcpBindingpublish = new NetTcpBinding (); tcpBindingpublish.Security.Mode = SecurityMode.None; eventServiceHost.AddServiceEndpoint (typeof (IGreetings), tcpBindingpublish, "net.tcp://localhost:8000/GreetingsService"); eventServiceHost.Open (); //Create client proxy NetTcpBinding clientBinding = new NetTcpBinding (); clientBinding.Security.Mode = SecurityMode.None; EndpointAddress ep = new EndpointAddress ("net.tcp://localhost:8000/GreetingsService"); ClientCallback cb = new ClientCallback (); IGreetings proxy = DuplexChannelFactory<IGreetings>.CreateChannel (new InstanceContext (cb), clientBinding, ep); //Call service proxy.SendMessage (); //Wait for callback - sort of hack, but better than using wait handle to possibly block tests. Thread.Sleep (1000); //Cleanup eventServiceHost.Close (); } } Actual result: ERROR:generic-sharing.c:712:class_get_rgctx_template_oti: assertion failed: (oti) Expected result: show an error dialog saying I'm missing some interface implementations on the dynamically generated code. -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
