Fix MethodMirror.GetCustomAttributes ().
[mono.git] / mono / metadata / object.c
index 3731cd5c430dbbd51a1ba87da25dfdc8a7c7aa8b..04dc219207dc56c3201247d0b77b8e8853957f5c 100644 (file)
@@ -6018,15 +6018,22 @@ mono_print_unhandled_exception (MonoObject *exc)
 
        if (exc == (MonoObject*)mono_object_domain (exc)->out_of_memory_ex) {
                message = g_strdup ("OutOfMemoryException");
+               free_message = TRUE;
        } else {
-               str = mono_object_to_string (exc, NULL);
-               if (str) {
-                       message = mono_string_to_utf8_checked (str, &error);
-                       if (!mono_error_ok (&error)) {
-                               mono_error_cleanup (&error);
-                               message = (char *) "";
-                       } else {
-                               free_message = TRUE;
+               
+               if (((MonoException*)exc)->native_trace_ips) {
+                       message = mono_exception_get_native_backtrace ((MonoException*)exc);
+                       free_message = TRUE;
+               } else {
+                       str = mono_object_to_string (exc, NULL);
+                       if (str) {
+                               message = mono_string_to_utf8_checked (str, &error);
+                               if (!mono_error_ok (&error)) {
+                                       mono_error_cleanup (&error);
+                                       message = (char *) "";
+                               } else {
+                                       free_message = TRUE;
+                               }
                        }
                }
        }
@@ -6035,7 +6042,7 @@ mono_print_unhandled_exception (MonoObject *exc)
         * g_printerr ("\nUnhandled Exception: %s.%s: %s\n", exc->vtable->klass->name_space, 
         *         exc->vtable->klass->name, message);
         */
-       g_printerr ("\nUnhandled Exception: %s\n", message);
+       g_printerr ("\nUnhandled Exception:\n%s\n", message);
        
        if (free_message)
                g_free (message);