[Mono-bugs] [Bug 662174] New: Invalid IL exception when using foreach and casting to IEnumerable<object>

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Jan 3 23:00:33 EST 2011


https://bugzilla.novell.com/show_bug.cgi?id=662174

https://bugzilla.novell.com/show_bug.cgi?id=662174#c0


           Summary: Invalid IL exception when using foreach and casting to
                    IEnumerable<object>
    Classification: Mono
           Product: Mono: Runtime
           Version: 2.8.x
          Platform: x86-64
        OS/Version: Other
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: generics
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: earlz at earlz.biz.tm
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13)
Gecko/20101211 Firefox/3.6.13

While trying to make a generic T4 template dealing with some variables I ran
into this Invalid IL problem. 

The relevant code:

string Title="...";
StreamWriter __Output=....

if(Title!=null){
    var v=Title;
    Type t = v.GetType();
    if (t.IsGenericType && t.GetGenericTypeDefinition() ==
typeof(IEnumerable<>))
    {
       foreach(var item in (IEnumerable<object>)v)
__Output.Append(item.ToString()); //error here
    }else{
        __Output.Append(v.ToString());
    }
}

The error goes away if I comment out the foreach loop line. 

I am on an x86-64 install of Arch Linux using up to date Mono packages.
It happened in an ASP.Net application. The using list is

using System;
using System.Core;
using System.Generics.Collections;


Reproducible: Always

Steps to Reproduce:
Use the provided code. 
Actual Results:  
An Invalid IL exception:

Invalid IL code in EViewEngine.TestView:BuildOutput (): IL_0105: castclass
0x1b000002 

Expected Results:  
It should have skipped over this code because Title in this case was a string.

-- 
Configure bugmail: https://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