[Mono-bugs] [Bug 684884] New: Program crashes to GDB when ILGenerator.Emit(Opcodes.Ret) is called

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Apr 4 11:28:20 EDT 2011



           Summary: Program crashes to GDB when
                    ILGenerator.Emit(Opcodes.Ret) is called
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.6.x
          Platform: i386
        OS/Version: Ubuntu
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: CORLIB
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: borgdylan at hotmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---

Created an attachment (id=423000)
 --> (http://bugzilla.novell.com/attachment.cgi?id=423000)
File that the compiler tried to process

User-Agent:       Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101

This crashing program is a compiler I'm writing. It all works fine on windows
(.NET and Mono) but on Ubuntu it drops to GDB giving me a native stack trace
saying a validation failed inside mono's method-to-ir.c.

Reproducible: Always

Steps to Reproduce:
1.Try ILGenerator.Emit(Opcode.Ret) in a MethodBuilder.
(see attached files)
Actual Results:  
See the following terminal extract:

dylan at ubuntu:/media/MOBEXTHDD/Code/dylannet$ mono ./compiler/dnc.exe
dylan.NET Compiler v. 11.2.4 for Microsoft (R) .NET Framework (R) v. 3.5 SP1
                           and Novell Mono v. 2.6.7 /v. 2.10
Copyright (C) Dylan Borg 2010
Now Lexing: firstapp.txt...Done.
Now Parsing: firstapp.txt...Done.
Referencing Assembly: compiler/mscorlib.dll
Referencing Assembly: compiler/System.dll
Referencing Assembly: compiler/System.Core.dll
Referencing Assembly: compiler/System.Data.dll
Referencing Assembly: compiler/System.Data.DataSetExtensions.dll
Referencing Assembly: compiler/System.Xml.dll
Referencing Assembly: compiler/System.Xml.Linq.dll
Referencing Assembly: compiler/System.Windows.Forms.dll
Referencing Assembly: compiler/Microsoft.VisualBasic.dll
Importing Namespace: Microsoft.VisualBasic
Importing Namespace: System
Importing Namespace: System.Reflection
Importing Namespace: System.Collections
Importing Namespace: System.Collections.Generic
Importing Namespace: System.Data
Importing Namespace: System.Diagnostics
Importing Namespace: System.Linq
Importing Namespace: System.Xml
Importing Namespace: System.Xml.Linq
Importing Namespace: System.Windows.Forms
Beginning Assembly: firstappg2
Adding Class: firstappg2.Module1
Adding Method: main
ERROR:method-to-ir.c:11047:mono_spill_global_vars: assertion failed:
(store_opcode != OP_STOREV_MEMBASE)

  at dylan.NET.Reflection.ILEmitter.EmitRet () <0xffffffff>
  at dylan.NET.Reflection.ILEmitter.EmitRet () <0x00017>
  at dylan.NET.Tokenizer.CodeGen.StmtReader.Read
(dylan.NET.Tokenizer.AST.Stmts.Stmt) <0x00cf8>
  at dylan.NET.Tokenizer.CodeGen.CodeGenerator.EmitMSIL
(dylan.NET.Tokenizer.AST.Stmts.StmtSet) <0x00082>
  at dylan.NET.Compiler.Module1.main (string[]) <0x00132>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object
(object,intptr,intptr,intptr) <0x00043>

Native stacktrace:

    mono() [0x80d4d0b]
    /lib/libc.so.6(abort+0x182) [0x14ce42]
    /lib/libglib-2.0.so.0(g_assertion_message+0x15f) [0x7224af]
    /lib/libglib-2.0.so.0(+0x65aed) [0x722aed]
    mono() [0x806862b]
    mono() [0x8060088]
    mono() [0x80606bf]
    mono() [0x806123e]
    mono() [0x80d8b4e]
    mono() [0x8061328]
    mono(mono_runtime_invoke+0x40) [0x813c890]
    mono(mono_runtime_exec_main+0xde) [0x81403de]
    mono(mono_runtime_run_main+0x112) [0x81406e2]
    mono(mono_main+0x1679) [0x80b2f99]
    mono() [0x8059385]
    /lib/libc.so.6(__libc_start_main+0xe7) [0x135ce7]
    mono() [0x80592c1]

Debug info from gdb:

Could not attach to process.  If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: Operation not permitted.

Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.

dylan at ubuntu:/media/MOBEXTHDD/Code/dylannet$ 

ILEmitter.EmitRet specified above does an ILGenerator.Emit(OpCodes.Ret)

Expected Results:  
The system was expected to work like it did in windows.

The file attached firstapp.txt is compiled using dnc.exe inside the compiler
directory. The command used is:
mono ./compiler/dnc.exe firstapp.txt

I will add a TAR file of the compiler durectory that you can use to see the bug

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