[Mono-bugs] [Bug 461198] New: [Regression] Still some corlib trouble with thrown/ catched exception and genrics

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Dec 20 10:56:10 EST 2008


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


           Summary: [Regression] Still some corlib trouble with
                    thrown/catched exception and genrics
           Product: Mono: Runtime
           Version: SVN
          Platform: x86-64
        OS/Version: Linux
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: generics
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: mono at e-tobi.net
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


It's basically the same regression as already found and fixed in:

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

Running the following code throws a runtime error (see below). Running it with
MONO_GENERIC_SHARING=corlib works fine.

I found this problem while trying to use StructureMap with Mono.

using System;

namespace TestCase
{
    class Program
    {
        public static void Main()
        {
            new Foo<string>().DoSomething();
        }
    }

    public class Foo<T> : Bar<Foo<T>> 
    {
    }

    public class Bar<T> : Baz
    {
        protected override void DoSomethingElse()
        {
            try
            {
                throw new Exception();
            }
            catch
            {
            }
        }
    }

    public abstract class Baz
    {
        protected abstract void DoSomethingElse();

        public virtual void DoSomething()
        {
            DoSomethingElse();
        }
    }
}

The runtime error:

[mono-trunk] /tmp/testcase/testcase/bin/Debug @ mono ./testcase.exe
**
** ERROR:(mini-exceptions.c:768):get_exception_catch_class: assertion failed:
(class->generic_class->container_class == method_container_class)
Stacktrace:


Native stacktrace:

        mono [0x47dc00]
        /lib/libpthread.so.0 [0x7fd3e28bea80]
        /lib/libc.so.6(gsignal+0x35) [0x7fd3e230bed5]
        /lib/libc.so.6(abort+0x183) [0x7fd3e230d3f3]
        /usr/lib/libglib-2.0.so.0(g_assertion_message+0x104) [0x7fd3e2f37fe4]
        /usr/lib/libglib-2.0.so.0 [0x7fd3e2f38482]
        mono [0x47d067]
        mono [0x47cc35]
        mono(mono_amd64_throw_exception+0x139) [0x4aeaf9]
        [0x40330b36]

Debug info from gdb:

[Thread debugging using libthread_db enabled]
[New Thread 0x7fd3e3597720 (LWP 22056)]
[New Thread 0x412ac950 (LWP 22058)]
[New Thread 0x40ea8950 (LWP 22057)]
0x00007fd3e23a6269 in syscall () from /lib/libc.so.6
  3 Thread 0x40ea8950 (LWP 22057)  0x00007fd3e28be0e1 in nanosleep () from
/lib/libpthread.so.0
  2 Thread 0x412ac950 (LWP 22058)  0x00007fd3e28bcbd1 in sem_wait () from
/lib/libpthread.so.0
  1 Thread 0x7fd3e3597720 (LWP 22056)  0x00007fd3e23a6269 in syscall () from
/lib/libc.so.6

Thread 3 (Thread 0x40ea8950 (LWP 22057)):
#0  0x00007fd3e28be0e1 in nanosleep () from /lib/libpthread.so.0
#1  0x00000000005568c2 in collection_thread (unused=<value optimized out>) at
collection.c:34
#2  0x00007fd3e28b6fc7 in start_thread () from /lib/libpthread.so.0
#3  0x00007fd3e23a95ad in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x412ac950 (LWP 22058)):
#0  0x00007fd3e28bcbd1 in sem_wait () from /lib/libpthread.so.0
#1  0x000000000052727a in finalizer_thread (unused=<value optimized out>) at
gc.c:928
#2  0x0000000000510803 in start_wrapper (data=<value optimized out>) at
threads.c:620
#3  0x00000000005589fb in thread_start_routine (args=0x14f0668) at
threads.c:279
#4  0x000000000056ebd2 in GC_start_routine (arg=0x7fd3e3442e70) at
pthread_support.c:1382
#5  0x00007fd3e28b6fc7 in start_thread () from /lib/libpthread.so.0
#6  0x00007fd3e23a95ad in clone () from /lib/libc.so.6
#7  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fd3e3597720 (LWP 22056)):
#0  0x00007fd3e23a6269 in syscall () from /lib/libc.so.6
#1  0x000000000047dd02 in mono_handle_native_sigsegv (signal=10, ctx=<value
optimized out>) at mini-exceptions.c:1406
#2  <signal handler called>
#3  0x00007fd3e230bed5 in raise () from /lib/libc.so.6
#4  0x00007fd3e230d3f3 in abort () from /lib/libc.so.6
#5  0x00007fd3e2f37fe4 in g_assertion_message () from /usr/lib/libglib-2.0.so.0
#6  0x00007fd3e2f38482 in g_assertion_message_expr () from
/usr/lib/libglib-2.0.so.0
#7  0x000000000047d067 in mono_handle_exception_internal (ctx=0x7fffeb5ba310,
obj=0x7fd3e11d1de0, original_ip=<value optimized out>, test_only=1,
out_filter_idx=0x7fffeb5ba3bc)
    at mini-exceptions.c:768
#8  0x000000000047cc35 in mono_handle_exception_internal (ctx=0x7fffeb5ba400,
obj=0x7fd3e11d1de0, original_ip=0x40e954d0, test_only=0, out_filter_idx=0x0) at
mini-exceptions.c:863
#9  0x00000000004aeaf9 in mono_amd64_throw_exception (dummy1=<value optimized
out>, dummy2=<value optimized out>, dummy3=<value optimized out>, dummy4=<value
optimized out>, 
    dummy5=<value optimized out>, dummy6=<value optimized out>,
exc=0x7fd3e11d1de0, rip=1089033424, rsp=140737142039840, rbx=0,
rbp=140737142039888, r12=21751376, r13=0, 
    r14=140548027718656, r15=140547991638000, rdi=140547991608800, rsi=0,
rax=140547991608800, rcx=1089033712, rdx=0, rethrow=0) at
exceptions-amd64.c:348
#10 0x0000000040330b36 in ?? ()
#11 0x00007fd3e11d1de0 in ?? ()
#12 0x0000000040e954d0 in ?? ()
#13 0x00007fffeb5ba520 in ?? ()
#14 0x0000000000000000 in ?? ()
#0  0x00007fd3e23a6269 in syscall () from /lib/libc.so.6

=================================================================
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.
=================================================================


-- 
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