aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_bif_trace.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2017-01-12 15:16:54 +0100
committerRickard Green <[email protected]>2017-01-12 15:16:54 +0100
commitca8fbd7e5835ac4e33e9041eabe87eb289a6b251 (patch)
tree3bab0d8e6f32169147e9f2f791af02dc107c50f7 /erts/emulator/beam/erl_bif_trace.c
parent568e6b5faebf85fb35119858fcb4824f46a4266c (diff)
parentc057b468ee7535f199aa01301ff93e059fad4b07 (diff)
downloadotp-ca8fbd7e5835ac4e33e9041eabe87eb289a6b251.tar.gz
otp-ca8fbd7e5835ac4e33e9041eabe87eb289a6b251.tar.bz2
otp-ca8fbd7e5835ac4e33e9041eabe87eb289a6b251.zip
Merge branch 'rickard/ds-fixes' into maint
OTP-14122 * rickard/ds-fixes: Fix call time tracing with dirty schedulers
Diffstat (limited to 'erts/emulator/beam/erl_bif_trace.c')
-rw-r--r--erts/emulator/beam/erl_bif_trace.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_bif_trace.c b/erts/emulator/beam/erl_bif_trace.c
index 96275eb228..0627526d7e 100644
--- a/erts/emulator/beam/erl_bif_trace.c
+++ b/erts/emulator/beam/erl_bif_trace.c
@@ -1062,9 +1062,16 @@ trace_info_func(Process* p, Eterm func_spec, Eterm key)
erts_smp_thr_progress_block();
}
#endif
+#ifdef ERTS_DIRTY_SCHEDULERS
+ erts_smp_mtx_lock(&erts_dirty_bp_ix_mtx);
+#endif
+
r = function_is_traced(p, mfa, &ms, &ms_meta, &meta, &count, &call_time);
+#ifdef ERTS_DIRTY_SCHEDULERS
+ erts_smp_mtx_unlock(&erts_dirty_bp_ix_mtx);
+#endif
#ifdef ERTS_SMP
if ( (key == am_call_time) || (key == am_all)) {
erts_smp_thr_progress_unblock();