mono_runtime_invoke might be called by P/Invoked code, which is in blocking mode. Not switching back to running can lead to a crash when hitting a safepoint.
if (mono_profiler_get_events () & MONO_PROFILE_METHOD_EVENTS)
mono_profiler_method_start_invoke (method);
+ MONO_PREPARE_RESET_BLOCKING;
+
result = do_runtime_invoke (method, obj, params, exc);
+ MONO_FINISH_RESET_BLOCKING;
+
if (mono_profiler_get_events () & MONO_PROFILE_METHOD_EVENTS)
mono_profiler_method_end_invoke (method);