http://bugzilla.novell.com/show_bug.cgi?id=561737
http://bugzilla.novell.com/show_bug.cgi?id=561737#c1 --- Comment #1 from Sebastien Pouliot <[email protected]> 2009-12-13 17:58:09 UTC --- Changing the macro into a function (that deals with the NULL return value) fix this issue but crash a bit later Index: mini/mini.c =================================================================== --- mini/mini.c (revision 148335) +++ mini/mini.c (working copy) @@ -861,7 +861,17 @@ cfg->vreg_to_inst [vreg] = inst; } -#define mono_type_is_long(type) (!(type)->byref && ((mono_type_get_underlying_type (type)->type == MONO_TYPE_I8) || (mono_type_get_underlying_type (type)->type == MONO_TYPE_U8))) +static gboolean +mono_type_is_long (MonoType *type) +{ + if (type->byref) { + return FALSE; + } else { + MonoType *utype = mono_type_get_underlying_type (type); + return (utype && ((utype->type == MONO_TYPE_I8) || (utype->type == MONO_TYPE_U8))); + } +} + #define mono_type_is_float(type) (!(type)->byref && (((type)->type == MONO_TYPE_R8) || ((type)->type == MONO_TYPE_R4))) #ifdef DISABLE_JIT Again I'm not sure if the above patch is needed. It would be better to ensure, at verification time, that no usable type can result in having a NULL value returned by mono_type_get_underlying_type ** (process:887): WARNING **: The class System.Text.RegularExpressions.Position could not be loaded, used in System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e Compilation of System.Text.RegularExpressions.Interpreter:Reset () failed with exception 'Could not load type .RepeatContext at 0x0000': [Switching to Thread 0xb751db90 (LWP 890)] Breakpoint 1, type_to_eval_stack_type (cfg=0x835dd00, type=0x836b628, inst=0x837dd2c) at method-to-ir.c:612 612 g_warning ("MONO_TYPE_VALUETYPE"); (gdb) p type->data.klass->name $1 = 0xb7bd034a "Position" (gdb) p type->data.klass->name_space $2 = 0xb7bd01b9 "System.Text.RegularExpressions" (gdb) c Continuing. ** (process:887): WARNING **: MONO_TYPE_VALUETYPE Program received signal SIGSEGV, Segmentation fault. 0x080683ba in type_to_eval_stack_type (cfg=0x835dd00, type=0x0, inst=0x837dd2c) at method-to-ir.c:573 573 switch (type->type) { The problem is that System.Text.RegularExpressions.Position could not been loaded (see WARNING) but it's used in another method and the verifier did not catch that. -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
