[Mono-bugs] [Bug 538854] New: Anonymous Delegate { Anonymous Delegate } ERROR: metadata.c:3201: mono_metadata_token_from_dor: code should not be reached

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sun Sep 13 21:09:11 EDT 2009


http://bugzilla.novell.com/show_bug.cgi?id=538854


           Summary: Anonymous Delegate { Anonymous Delegate } ERROR:
                    metadata.c:3201: mono_metadata_token_from_dor: code
                    should not be reached
    Classification: Mono
           Product: Mono: Runtime
           Version: 2.4.x
          Platform: x86-64
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: misc
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: teravus at gmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


Created an attachment (id=318025)
 --> (http://bugzilla.novell.com/attachment.cgi?id=318025)
Log-Stack Trace and abridged source files for review

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1)
Gecko/20090624 Firefox/3.5

It looks like in some cases when an Anonymous Delegate contains another
anonymous delegate and the first one is fired with void delegate (void) using
the BeginInvoke in a static method and you're using Mono.Addins to load
modules, the mono_metadata_token_from_dor asserts on Linux.   On windows, it
just freezes.  (memory corruption?)

Reproducible: Always

Steps to Reproduce:
I've included the stack trace and abridged source of the areas.
The code that seems to trigger the bug is in SceneCommunicationService.cs.   It
happens regardless of whether the source is compiled in Visual Studio and run
on Mono, or if it was compiled with Mono and run on Mono.

The elements to this are as follows, 
A static method to call a BeginInvoke on a threadstart (Util.FireAndForget)
An anonymous delegate that references variables in the method that calls it.
(SceneCommunicationService.InformClientToInitateTeleportToLocation)

An anonymous delegate inside that anonymous delegate that takes bool.

Mono.Addins, in this case, I think just points it out..   it probably would
have happened anyway later.
Actual Results:  
Asserts on Linux.
Freezes on Windows.
while loading Mono.Addins modules.

Expected Results:  
The Anonymous delegates fire as expected.

If I take the Util.FireAndForget out of it, use a named delegate with proper
paramaters and do the BeginInvoke/EndInvoke the bug is not triggered.

-- 
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