[Mono-bugs] [Bug 558230] New: [verifier] SIGSEGV in mono_class_is_open_constructed_type on a bad assembly

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Nov 24 20:51:55 EST 2009


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

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


           Summary: [verifier] SIGSEGV in
                    mono_class_is_open_constructed_type on a bad assembly
    Classification: Mono
           Product: Mono: Runtime
           Version: 2.6.x
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: misc
        AssignedTo: rkumpera at novell.com
        ReportedBy: spouliot at novell.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fd1a07c1710 (LWP 20431)]
0x00000000004135d7 in mono_class_is_open_constructed_type (t=0x0) at
class.c:478
478        switch (t->type) {
(gdb) bt
#0  0x00000000004135d7 in mono_class_is_open_constructed_type (t=0x0) at
class.c:478
#1  0x000000000044a1a5 in mono_metadata_get_generic_inst (type_argc=1,
type_argv=0x863530) at metadata.c:2393
#2  0x000000000044b810 in mono_metadata_inflate_generic_inst (ginst=0x863620,
context=0x87f268) at metadata.c:2507
#3  0x000000000041b7cd in inflate_generic_type (image=0x0, type=0x87f8d0,
context=0x87f268, error=<value optimized out>) at class.c:571
#4  0x000000000041c96a in mono_type_retrieve_from_typespec (image=<value
optimized out>, type_spec=<value optimized out>, context=0x87f268,
did_inflate=0x7fffa87dfff4) at class.c:5095
#5  0x000000000041cc84 in mono_class_get_full (image=0x85da80,
type_token=8795440, context=0x50da40) at class.c:5117
#6  0x000000000042f552 in mono_field_from_token (image=0x85da80,
token=167772270, retklass=0x7fffa87e00a8, context=0x87f268) at loader.c:447
#7  0x000000000049488f in verifier_load_field (ctx=0x7fffa87e0310,
token=167772270, out_klass=0x7fffa87e00f0, opcode=0x523f3b "stfld") at
verify.c:826
#8  0x000000000049492e in check_is_valid_type_for_field_ops (ctx=0x0,
token=8795440, obj=0x862bc0, ret_field=0x7fffa87e0128,
opcode=0x2525252525252525 <Address 0x2525252525252525 out of bounds>)
    at verify.c:3542
#9  0x0000000000494fd3 in do_store_field (ctx=0x7fffa87e0310, token=167772270)
at verify.c:3621
#10 0x000000000049a5fd in mono_method_verify (method=<value optimized out>,
level=<value optimized out>) at verify.c:5525
#11 0x000000000040daed in main (argc=8430352, argv=<value optimized out>) at
pedump.c:374


The loop calling mono_class_inflate_generic_type in
mono_metadata_inflate_generic_inst (#2) does not check the result, which can be
NULL on error, and then goes on to call mono_metadata_get_generic_inst (#1)
with a vector that contains NULL values (which the code does not handle).

The solution seems to change the call to use
mono_class_inflate_generic_type_checked (easy) then deal with/propagate the
error upward (less fun).

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list