diff options
author | John Högberg <[email protected]> | 2018-04-10 11:42:06 +0200 |
---|---|---|
committer | John Högberg <[email protected]> | 2018-04-16 15:44:56 +0200 |
commit | c71d914fa41f3b272dc80fefc33c1bb40ca86652 (patch) | |
tree | b84f780520dc986f24f474da5d39f6222069948c /erts/emulator/beam/io.c | |
parent | 40dc6b9fed7d51a204e0d69b7bba7e8cb6496ae5 (diff) | |
download | otp-c71d914fa41f3b272dc80fefc33c1bb40ca86652.tar.gz otp-c71d914fa41f3b272dc80fefc33c1bb40ca86652.tar.bz2 otp-c71d914fa41f3b272dc80fefc33c1bb40ca86652.zip |
erts: Update esdp->current_port on immediate port calls
This increases the accuracy of crash dumps and the upcoming
allocation tagging feature.
Diffstat (limited to 'erts/emulator/beam/io.c')
-rw-r--r-- | erts/emulator/beam/io.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c index 66b8005975..10075c2c98 100644 --- a/erts/emulator/beam/io.c +++ b/erts/emulator/beam/io.c @@ -956,6 +956,9 @@ try_imm_drv_call(ErtsTryImmDrvCallState *sp) reds_left_in = ERTS_BIF_REDS_LEFT(c_p); erts_proc_unlock(c_p, ERTS_PROC_LOCK_MAIN); + + ASSERT((c_p->scheduler_data)->current_port == NULL); + (c_p->scheduler_data)->current_port = prt; } ASSERT(0 <= reds_left_in && reds_left_in <= CONTEXT_REDS); @@ -1017,6 +1020,9 @@ finalize_imm_drv_call(ErtsTryImmDrvCallState *sp) erts_port_release(prt); if (c_p) { + ASSERT((c_p->scheduler_data)->current_port == prt); + (c_p->scheduler_data)->current_port = NULL; + erts_proc_lock(c_p, ERTS_PROC_LOCK_MAIN); if (reds != (CONTEXT_REDS - sp->reds_left_in)) { |