[Mono-bugs] [Bug 617714] New: [.NET 4] Assembly loader fails to load type from remapped assembly

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sun Jun 27 05:08:57 EDT 2010


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

http://bugzilla.novell.com/show_bug.cgi?id=617714#c0


           Summary: [.NET 4] Assembly loader fails to load type from
                    remapped assembly
    Classification: Mono
           Product: Mono: Runtime
           Version: SVN
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: misc
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: mhabersack at novell.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=371955)
 --> (http://bugzilla.novell.com/attachment.cgi?id=371955)
mono_4.0_assembly_loader_bug.tar.bz2

When a 4.0 application references a 2.0/3.5 assembly which, in turn, references
types that live in a remapped assembly (e.g. System.Core's Action types), the
runtime will fail to load any type in the referenced assembly that relies upon
types in the remapped assembly. 

Initially I thought it had to do with the fact that System.Core was not in the
framework_assemblies array in assembly.c, but even after putting it there (diff
for assembly.c is found in the attached tarball) it doesn't work. The assembly
gets remapped properly but the type load is still attempted from the version of
assembly from before the mapping.

This breaks, e.g., ASP.NET MVC2 applications (a sample app is found in the
tarball as well) which are ran under Mono .NET 4 runtime. To run the sample MVC
app, start xsp4 in the MvcApplication2/MvcApplication2/ directory and browse to
http://localhost:8080/
A MissingMethodException will be thrown stating that the
System.Web.Mvc.RouteCollectionExtensions.IgnoreRoute method (from
System.Web.Mvc.dll - compiled for the 2.0/3.5 runtime) is not found.

The tarball contains also a simpler example of how the remapping fails (in the
test/ directory). The sample consists of an assembly which uses System.Core's
Action type (in 4.0 this type got moved to corlib) and a small app which
references the assembly. The sample build script, compile.sh, when invoked
without any parameters will fail to compile the application (in this mode it
compiles ab assembly using gmcs and the test application with dmcs - in effect
dmcs fails to load the Test.MyClass type from the sample assembly). If invoked
with any parameter, it will succeed to compile the assembly and the application
(in this mode the assembly is compiled twice - first with dmcs to make it
possible to compile test.exe, second with gmcs after test.exe is built) but the
application will fail to work as Test.MyClass fails to load.

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