Bug 322086 (MONO79379) - [GMCS] runtime crashes on trivial generic code generated by CSC
Summary: [GMCS] runtime crashes on trivial generic code generated by CSC
Status: RESOLVED FIXED
Alias: MONO79379
Product: Mono: Runtime
Classification: Mono
Component: JIT (show other bugs)
Version: 1.1
Hardware: Other Other
: P3 - Medium : Major
Target Milestone: ---
Assignee: Massimiliano Mantione
QA Contact: Mono Bugs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-09-12 17:25 UTC by Jan Oravec
Modified: 2007-10-25 20:06 UTC (History)
0 users

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
a.cs (136 bytes, text/plain)
2006-09-12 17:26 UTC, Thomas Wiest
Details
b.cs (63 bytes, text/plain)
2006-09-12 17:26 UTC, Thomas Wiest
Details
a.dll (3.00 KB, application/octet-stream)
2006-09-12 17:27 UTC, Thomas Wiest
Details
b.exe (3.00 KB, application/octet-stream)
2006-09-12 17:27 UTC, Thomas Wiest
Details
zip-file containing all files (sources and binaries) (4.92 KB, application/octet-stream)
2007-04-04 22:01 UTC, Thomas Wiest
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Wiest 2007-09-15 20:09:47 UTC


---- Reported by jan.oravec@6com.sk 2006-09-12 10:25:17 MST ----

When the attached a.cs is compiled with CSC 8.00.50727.42, framework
2.0.50727 into (also attached) a.dll, then both of this fails:

1)

gmcs b.cs -r:a.dll

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

Stacktrace:

  at (wrapper managed-to-native) System.Reflection.Assembly.InternalGetType
(System.Reflection.Module,string,bool,bool) <0x0000e>
  at (wrapper managed-to-native) System.Reflection.Assembly.InternalGetType
(System.Reflection.Module,string,bool,bool) <0xffffffff>
  at System.Reflection.Assembly.GetType (string,bool,bool) <0x0003f>
  at System.Reflection.Assembly.GetType (string) <0x00027>
  at Mono.CSharp.RootNamespace.GetTypeInAssembly
(System.Reflection.Assembly,string) <0x00030>
  at Mono.CSharp.GlobalRootNamespace.LookupTypeReflection
(string,Mono.CSharp.Location) <0x00098>
  at Mono.CSharp.Namespace.LookupType (string,Mono.CSharp.Location) <0x00186>
  at Mono.CSharp.Namespace.Lookup
(Mono.CSharp.DeclSpace,string,Mono.CSharp.Location) <0x0009f>
  at Mono.CSharp.NamespaceEntry.Lookup
(Mono.CSharp.DeclSpace,string,Mono.CSharp.Location,bool) <0x00087>
  at Mono.CSharp.NamespaceEntry.LookupNamespaceOrType
(Mono.CSharp.DeclSpace,string,Mono.CSharp.Location,bool) <0x00065>
  at Mono.CSharp.DeclSpace.LookupType (string,Mono.CSharp.Location,bool)
<0x00140>
  at Mono.CSharp.DeclSpace.LookupType (string,Mono.CSharp.Location,bool)
<0x00105>
  at Mono.CSharp.SimpleName.ResolveAsTypeStep
(Mono.CSharp.IResolveContext,bool) <0x00134>
  at Mono.CSharp.Expression.ResolveAsBaseTerminal
(Mono.CSharp.IResolveContext,bool) <0x0004d>
  at Mono.CSharp.Expression.ResolveAsTypeTerminal
(Mono.CSharp.IResolveContext,bool) <0x00044>
  at Mono.CSharp.LocalInfo.Resolve (Mono.CSharp.EmitContext) <0x0003b>
  at Mono.CSharp.Block.ResolveMeta
(Mono.CSharp.ToplevelBlock,Mono.CSharp.EmitContext,Mono.CSharp.Parameters)
<0x002a5>  at Mono.CSharp.ToplevelBlock.ResolveMeta
(Mono.CSharp.EmitContext,Mono.CSharp.Parameters) <0x00062>
  at Mono.CSharp.EmitContext.ResolveTopBlock
(Mono.CSharp.EmitContext,Mono.CSharp.ToplevelBlock,Mono.CSharp.Parameters,Mono.CSharp.IMethodData,bool&)
<0x00155>
  at Mono.CSharp.EmitContext.EmitTopBlock
(Mono.CSharp.IMethodData,Mono.CSharp.ToplevelBlock) <0x00072>
  at Mono.CSharp.MethodData.Emit (Mono.CSharp.DeclSpace) <0x001c5>
  at Mono.CSharp.Method.Emit () <0x00021>
  at Mono.CSharp.TypeContainer.EmitType () <0x003c2>
  at Mono.CSharp.RootContext.EmitCode () <0x002b3>
  at Mono.CSharp.Driver.MainDriver (string[]) <0x00eed>
  at Mono.CSharp.Driver.Main (string[]) <0x00079>
  at (wrapper runtime-invoke) System.Object.runtime_invoke_int_string[]
(object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:

        /home/shared/mono//bin/mono(mono_handle_native_sigsegv+0xe4) [0x51dee4]
        /home/shared/mono//bin/mono [0x5085b1]
        /lib/libpthread.so.0 [0x2b255eff8e80]
        /home/shared/mono//bin/mono [0x4b8479]
        /home/shared/mono//bin/mono(mono_class_get_full+0xe7) [0x4b4b17]
       
/home/shared/mono//bin/mono(mono_metadata_load_generic_param_constraints+0x13b)
[0x45df2b]
        /home/shared/mono//bin/mono [0x4b51a7]
        /home/shared/mono//bin/mono(mono_class_get_full+0xad) [0x4b4add]
        /home/shared/mono//bin/mono [0x45a645]
        /home/shared/mono//bin/mono(mono_metadata_parse_type_full+0x144)
[0x45aa64]
        /home/shared/mono//bin/mono [0x45a6c1]
        /home/shared/mono//bin/mono(mono_type_create_from_typespec+0xde)
[0x45d1ae]
        /home/shared/mono//bin/mono(mono_class_get_full+0xbf) [0x4b4aef]
        /home/shared/mono//bin/mono [0x45bbd9]
        /home/shared/mono//bin/mono [0x4b5277]
        /home/shared/mono//bin/mono(mono_class_get_full+0xad) [0x4b4add]
        /home/shared/mono//bin/mono [0x45a645]
        /home/shared/mono//bin/mono(mono_metadata_parse_type_full+0x144)
[0x45aa64]
        /home/shared/mono//bin/mono [0x45a6c1]
        /home/shared/mono//bin/mono(mono_type_create_from_typespec+0xde)
[0x45d1ae]
        /home/shared/mono//bin/mono(mono_class_get_full+0xbf) [0x4b4aef]
        /home/shared/mono//bin/mono [0x45bbd9]
        /home/shared/mono//bin/mono [0x4b5277]
        /home/shared/mono//bin/mono(mono_class_get_full+0xad) [0x4b4add]
        /home/shared/mono//bin/mono(mono_class_from_name+0xf1) [0x4b4321]
        /home/shared/mono//bin/mono [0x48b69e]
        /home/shared/mono//bin/mono(mono_reflection_get_type+0x30) [0x48b7b0]
        /home/shared/mono//bin/mono [0x4a42f4]
        [0x4029a3be]


2)

Compile also b.cs into (attached) b.exe, and:

mono b.exe

Fails with:

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

Stacktrace:


Native stacktrace:

        mono(mono_handle_native_sigsegv+0xe4) [0x51dee4]
        mono [0x5085b1]
        /lib/libpthread.so.0 [0x2b1b2456ae80]
        mono [0x4b8479]
        mono(mono_class_get_full+0xe7) [0x4b4b17]
        mono(mono_metadata_load_generic_param_constraints+0x13b) [0x45df2b]
        mono [0x4b51a7]
        mono(mono_class_get_full+0xad) [0x4b4add]
        mono [0x45a645]
        mono(mono_metadata_parse_type_full+0x144) [0x45aa64]
        mono [0x45a6c1]
        mono(mono_type_create_from_typespec+0xde) [0x45d1ae]
        mono(mono_class_get_full+0xbf) [0x4b4aef]
        mono [0x45bbd9]
        mono [0x4b5277]
        mono(mono_class_get_full+0xad) [0x4b4add]
        mono [0x45a645]
        mono(mono_metadata_parse_type_full+0x144) [0x45aa64]
        mono [0x45a6c1]
        mono(mono_type_create_from_typespec+0xde) [0x45d1ae]
        mono(mono_class_get_full+0xbf) [0x4b4aef]
        mono [0x45bbd9]
        mono [0x4b5277]
        mono(mono_class_get_full+0xad) [0x4b4add]
        mono(mono_class_from_name+0xf1) [0x4b4321]
        mono(mono_class_from_typeref+0xd9) [0x4b47f9]
        mono(mono_class_get_full+0x82) [0x4b4ab2]
        mono [0x45a645]
        mono(mono_metadata_parse_type_full+0x144) [0x45aa64]
        mono [0x45a6c1]
        mono(mono_metadata_parse_type_full+0x144) [0x45aa64]
        mono(mono_metadata_parse_mh_full+0x167) [0x45b3b7]
        mono(mono_method_get_header+0xe7) [0x497da7]
        mono [0x5063c7]
        mono [0x507df7]
        mono [0x50842d]
        mono(mono_runtime_exec_main+0x62) [0x49af92]
        mono(mono_runtime_run_main+0x1fb) [0x49b2bb]
        mono(mono_main+0xe12) [0x419eb2]
        /lib/libc.so.6(__libc_start_main+0xf6) [0x2b1b247ea136]
        mono(fmod+0x82) [0x418b6a]
Aborted


The code works fine when both a.cs and b.cs are compiled with gmcs.

I have tested it with SVN revision 65185.



---- Additional Comments From jan.oravec@6com.sk 2006-09-12 10:26:23 MST ----

Created an attachment (id=170454)
a.cs




---- Additional Comments From jan.oravec@6com.sk 2006-09-12 10:26:49 MST ----

Created an attachment (id=170455)
b.cs




---- Additional Comments From jan.oravec@6com.sk 2006-09-12 10:27:14 MST ----

Created an attachment (id=170456)
a.dll




---- Additional Comments From jan.oravec@6com.sk 2006-09-12 10:27:35 MST ----

Created an attachment (id=170457)
b.exe




---- Additional Comments From miguel@ximian.com 2007-01-01 16:54:55 MST ----

Assigning to Martin.



---- Additional Comments From juraj@hotfeet.ch 2007-04-04 14:36:34 MST ----

This works just fine with mono from svn.



---- Additional Comments From juraj@hotfeet.ch 2007-04-04 14:58:22 MST ----

Well, "just fine" was a slight exageration.

- compiling both source files with gmcs and running the resulting
binaries on mono works.

- all binaries (csc and gmcs-generated) run on MS.NET
- the csc-generated binaries segfault on Mono

- monodis segfaults on both csc-generated binaries
- monodis segfaults on the gmcs-generated binrary "a.ll"!

I'll attach a zip-file containing all source files and all binaries
(csc- and gmcs-generated)



---- Additional Comments From juraj@hotfeet.ch 2007-04-04 15:01:41 MST ----

Created an attachment (id=170458)
zip-file containing all files (sources and binaries)




---- Additional Comments From massi@ximian.com 2007-08-17 10:49:41 MST ----

I cannot reproduce any of this on svn head (r84274).

Imported an attachment (id=170454)
Imported an attachment (id=170455)
Imported an attachment (id=170456)
Imported an attachment (id=170457)
Imported an attachment (id=170458)

Unknown operating system unknown. Setting to default OS "Other".

Comment 1 Rodrigo Kumpera 2007-10-25 20:06:50 UTC
The test works with svn head r88154. This bug has been fixed long time ago.