2003-01-08 Dietmar Maurer <dietmar@ximian.com>
authorDietmar Maurer <dietmar@mono-cvs.ximian.com>
Wed, 8 Jan 2003 12:40:08 +0000 (12:40 -0000)
committerDietmar Maurer <dietmar@mono-cvs.ximian.com>
Wed, 8 Jan 2003 12:40:08 +0000 (12:40 -0000)
* exception.c (ves_icall_get_frame_info): skip one more frame and also
MONO_WRAPPER_RUNTIME_INVOKE wrappers

svn path=/trunk/mono/; revision=10278

mono/jit/ChangeLog
mono/jit/exception.c

index d56e33965d0b4b5b44df328bb573b8375753b11b..863b3606bd9d2a33c2066f0fa06a02df71f35242 100644 (file)
@@ -1,3 +1,8 @@
+2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
+
+       * exception.c (ves_icall_get_frame_info): skip one more frame and also
+       MONO_WRAPPER_RUNTIME_INVOKE wrappers
+
 2003-01-07  Dietmar Maurer  <dietmar@ximian.com>
 
        * exception.c (ves_icall_get_frame_info): fix bug 36382
index 3cde448b596fa3b44d509f6abf101f31326bb622..702c70a8bf82581aeb3231bcb0dd5be1dcb39135 100644 (file)
@@ -760,6 +760,8 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
        MONO_CONTEXT_SET_IP (&ctx, ves_icall_get_frame_info);
        MONO_CONTEXT_SET_BP (&ctx, __builtin_frame_address (0));
 
+       skip++;
+
        do {
                ji = mono_arch_find_jit_info (domain, jit_tls, &ctx, &new_ctx, NULL, &lmf, native_offset, NULL);
                ctx = new_ctx;
@@ -767,7 +769,12 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
                if (!ji || MONO_CONTEXT_GET_BP (&ctx) >= jit_tls->end_of_stack)
                        return FALSE;
 
-       } while (skip-- > 0);
+               if (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)
+                       continue;
+               
+               skip--;
+
+       } while (skip >= 0);
 
        *method = mono_method_get_object (domain, ji->method, NULL);
        *iloffset = mono_debug_il_offset_from_address (ji->method, *native_offset);