[Mono-bugs] [Bug 583501] New: generic sharing causes crash on some dynamically generated method(?)
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Thu Feb 25 21:18:36 EST 2010
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: mono-bugs at lists.ximian.com
ReportedBy: aenomoto at novell.com
QAContact: mono-bugs at lists.ximian.com
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.
More information about the mono-bugs
mailing list