aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2019-03-27 11:13:22 +0100
committerLukas Larsson <[email protected]>2019-04-09 14:29:10 +0200
commitd1af030aa879cdd907336420f44d488bec30241b (patch)
tree76a0a74ec8cad2fed95d9d3ee24d202bba3d9b91
parent0ded2cd1845020c475126c98b45e14e8c85d50eb (diff)
downloadotp-d1af030aa879cdd907336420f44d488bec30241b.tar.gz
otp-d1af030aa879cdd907336420f44d488bec30241b.tar.bz2
otp-d1af030aa879cdd907336420f44d488bec30241b.zip
erts: Fix lock order violation in system_info(procs)
-rw-r--r--erts/emulator/beam/erl_bif_info.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c
index a7424bbcb8..39d42d9757 100644
--- a/erts/emulator/beam/erl_bif_info.c
+++ b/erts/emulator/beam/erl_bif_info.c
@@ -2579,6 +2579,7 @@ BIF_RETTYPE system_info_1(BIF_ALIST_1)
/* Need to be the only thread running... */
erts_proc_unlock(BIF_P, ERTS_PROC_LOCK_MAIN);
+ BIF_P->scheduler_data->current_process = NULL;
erts_thr_progress_block();
if (BIF_ARG_1 == am_info)
@@ -2592,6 +2593,7 @@ BIF_RETTYPE system_info_1(BIF_ALIST_1)
erts_thr_progress_unblock();
erts_proc_lock(BIF_P, ERTS_PROC_LOCK_MAIN);
+ BIF_P->scheduler_data->current_process = BIF_P;
ASSERT(dsbufp && dsbufp->str);
res = new_binary(BIF_P, (byte *) dsbufp->str, dsbufp->str_len);