diff --git a/src/mono/mono/mini/exceptions-amd64.c b/src/mono/mono/mini/exceptions-amd64.c index 2b0ceb5b0b589f..3db3785e9bfd18 100644 --- a/src/mono/mono/mini/exceptions-amd64.c +++ b/src/mono/mono/mini/exceptions-amd64.c @@ -764,8 +764,12 @@ handle_signal_exception (gpointer obj) memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext)); + MONO_ENTER_GC_UNSAFE_UNBALANCED; + mono_handle_exception (&ctx, (MonoObject *)obj); + MONO_EXIT_GC_UNSAFE_UNBALANCED; + mono_restore_context (&ctx); } diff --git a/src/mono/mono/mini/exceptions-arm.c b/src/mono/mono/mini/exceptions-arm.c index bd544ee55ef228..f4bd6098eb4ec0 100644 --- a/src/mono/mono/mini/exceptions-arm.c +++ b/src/mono/mono/mini/exceptions-arm.c @@ -574,8 +574,12 @@ handle_signal_exception (gpointer obj) memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext)); + MONO_ENTER_GC_UNSAFE_UNBALANCED; + mono_handle_exception (&ctx, (MonoObject*)obj); + MONO_EXIT_GC_UNSAFE_UNBALANCED; + mono_restore_context (&ctx); } diff --git a/src/mono/mono/mini/exceptions-arm64.c b/src/mono/mono/mini/exceptions-arm64.c index 40b026a4095333..b55825583cca8a 100644 --- a/src/mono/mono/mini/exceptions-arm64.c +++ b/src/mono/mono/mini/exceptions-arm64.c @@ -522,8 +522,12 @@ handle_signal_exception (gpointer obj) memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext)); + MONO_ENTER_GC_UNSAFE_UNBALANCED; + mono_handle_exception (&ctx, (MonoObject*)obj); + MONO_EXIT_GC_UNSAFE_UNBALANCED; + mono_restore_context (&ctx); } diff --git a/src/mono/mono/mini/exceptions-ppc.c b/src/mono/mono/mini/exceptions-ppc.c index 69f6c490c13cb5..146fece236928e 100644 --- a/src/mono/mono/mini/exceptions-ppc.c +++ b/src/mono/mono/mini/exceptions-ppc.c @@ -734,8 +734,12 @@ handle_signal_exception (gpointer obj) memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext)); + MONO_ENTER_GC_UNSAFE_UNBALANCED; + mono_handle_exception (&ctx, obj); + MONO_EXIT_GC_UNSAFE_UNBALANCED; + mono_restore_context (&ctx); } diff --git a/src/mono/mono/mini/exceptions-riscv.c b/src/mono/mono/mini/exceptions-riscv.c index 8ae90e7e95a397..830efefa033660 100644 --- a/src/mono/mono/mini/exceptions-riscv.c +++ b/src/mono/mono/mini/exceptions-riscv.c @@ -390,7 +390,12 @@ handle_signal_exception (gpointer obj) MonoJitTlsData *jit_tls = mono_tls_get_jit_tls (); MonoContext ctx = jit_tls->ex_ctx; + MONO_ENTER_GC_UNSAFE_UNBALANCED; + mono_handle_exception (&ctx, obj); + + MONO_EXIT_GC_UNSAFE_UNBALANCED; + mono_restore_context (&ctx); } diff --git a/src/mono/mono/mini/exceptions-s390x.c b/src/mono/mono/mini/exceptions-s390x.c index c13ede7e922fdc..6c40214a13f742 100644 --- a/src/mono/mono/mini/exceptions-s390x.c +++ b/src/mono/mono/mini/exceptions-s390x.c @@ -673,7 +673,13 @@ handle_signal_exception (gpointer obj) MonoContext ctx; memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext)); + + MONO_ENTER_GC_UNSAFE_UNBALANCED; + mono_handle_exception (&ctx, obj); + + MONO_EXIT_GC_UNSAFE_UNBALANCED; + mono_restore_context (&ctx); } diff --git a/src/mono/mono/mini/exceptions-x86.c b/src/mono/mono/mini/exceptions-x86.c index e838fe7fc8d74d..c51181d9480366 100644 --- a/src/mono/mono/mini/exceptions-x86.c +++ b/src/mono/mono/mini/exceptions-x86.c @@ -935,8 +935,12 @@ handle_signal_exception (gpointer obj) memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext)); + MONO_ENTER_GC_UNSAFE_UNBALANCED; + mono_handle_exception (&ctx, (MonoObject*)obj); + MONO_EXIT_GC_UNSAFE_UNBALANCED; + mono_restore_context (&ctx); }