X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fattach.c;h=45c3da535940aa408e9d54d699273f3e94370fbf;hb=9a6211315c7540e2a5311556cc2a500cfa9f5f4a;hp=71e87e1c577f09e113fdc7ca9dba54647a044b44;hpb=811674bc6331c98d33134e2a37a7c7dd66402227;p=mono.git diff --git a/mono/metadata/attach.c b/mono/metadata/attach.c index 71e87e1c577..45c3da53594 100644 --- a/mono/metadata/attach.c +++ b/mono/metadata/attach.c @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include #include "attach.h" @@ -99,10 +99,6 @@ static gboolean stop_receiver_thread; static gboolean needs_to_start, started; -#define agent_lock() mono_mutex_lock (&agent_mutex) -#define agent_unlock() mono_mutex_unlock (&agent_mutex) -static mono_mutex_t agent_mutex; - static void transport_connect (void); static guint32 WINAPI receiver_thread (void *arg); @@ -156,7 +152,7 @@ decode_string_value (guint8 *buf, guint8 **endbuf, guint8 *limit) g_assert (length < (1 << 16)); - s = g_malloc (length + 1); + s = (char *)g_malloc (length + 1); g_assert (p + length <= limit); memcpy (s, p, length); @@ -184,8 +180,6 @@ mono_attach_parse_options (char *options) void mono_attach_init (void) { - mono_mutex_init_recursive (&agent_mutex); - config.enabled = TRUE; } @@ -271,6 +265,7 @@ mono_attach_cleanup (void) static int mono_attach_load_agent (MonoDomain *domain, char *agent, char *args, MonoObject **exc) { + MonoError error; MonoAssembly *agent_assembly; MonoImage *image; MonoMethod *method; @@ -298,9 +293,10 @@ mono_attach_load_agent (MonoDomain *domain, char *agent, char *args, MonoObject return 1; } - method = mono_get_method (image, entry, NULL); + method = mono_get_method_checked (image, entry, NULL, NULL, &error); if (method == NULL){ - g_print ("The entry point method of assembly '%s' could not be loaded\n", agent); + g_print ("The entry point method of assembly '%s' could not be loaded due to %s\n", agent, mono_error_get_message (&error)); + mono_error_cleanup (&error); g_free (agent); return 1; } @@ -315,7 +311,8 @@ mono_attach_load_agent (MonoDomain *domain, char *agent, char *args, MonoObject g_free (agent); pa [0] = main_args; - mono_runtime_invoke (method, NULL, pa, exc); + mono_runtime_try_invoke (method, NULL, pa, exc, &error); + mono_error_raise_exception (&error); /* FIXME don't raise here */ return 0; } @@ -530,7 +527,7 @@ receiver_thread (void *arg) content_len = decode_int (p, &p, p_end); /* Read message body */ - body = g_malloc (content_len); + body = (guint8 *)g_malloc (content_len); res = read (conn_fd, body, content_len); p = body;