diff options
Diffstat (limited to 'erts/emulator/beam/erl_trace.c')
-rw-r--r-- | erts/emulator/beam/erl_trace.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_trace.c b/erts/emulator/beam/erl_trace.c index 07aa6d7e21..d779faf7db 100644 --- a/erts/emulator/beam/erl_trace.c +++ b/erts/emulator/beam/erl_trace.c @@ -1363,6 +1363,7 @@ trace_gc(Process *p, Eterm what, Uint size, Eterm msg) Eterm* hp; Uint sz = 0; Eterm tup; + ErtsThrPrgrDelayHandle dhndl = erts_thr_progress_unmanaged_delay(); if (is_tracer_enabled(p, ERTS_PROC_LOCK_MAIN, &p->common, &tnif, TRACE_FUN_E_GC, what)) { @@ -1382,6 +1383,7 @@ trace_gc(Process *p, Eterm what, Uint size, Eterm msg) if (o_hp) erts_free(ERTS_ALC_T_TMP, o_hp); } + erts_thr_progress_unmanaged_continue(dhndl); } void @@ -2632,6 +2634,7 @@ lookup_tracer_nif(const ErtsTracer tracer) ErtsTracerNif tnif_tmpl; ErtsTracerNif *tnif; tnif_tmpl.module = ERTS_TRACER_MODULE(tracer); + ERTS_LC_ASSERT(erts_thr_progress_lc_is_delaying() || erts_get_scheduler_id() > 0); erts_rwmtx_rlock(&tracer_mtx); if ((tnif = hash_get(tracer_hash, &tnif_tmpl)) == NULL) { erts_rwmtx_runlock(&tracer_mtx); |