diff options
Diffstat (limited to 'erts/emulator/beam/erl_monitor_link.c')
-rw-r--r-- | erts/emulator/beam/erl_monitor_link.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_monitor_link.c b/erts/emulator/beam/erl_monitor_link.c index 2c7b765520..64256e22a0 100644 --- a/erts/emulator/beam/erl_monitor_link.c +++ b/erts/emulator/beam/erl_monitor_link.c @@ -1095,6 +1095,16 @@ erts_monitor_destroy__(ErtsMonitorData *mdp) || ((mdp->origin.flags & ERTS_ML_FLGS_SAME) == (mdp->u.target.flags & ERTS_ML_FLGS_SAME))); + if (mdp->origin.flags & ERTS_ML_STATE_ALIAS_MASK) { + ASSERT(mdp->origin.type == ERTS_MON_TYPE_ALIAS + || mdp->origin.type == ERTS_MON_TYPE_PROC + || mdp->origin.type == ERTS_MON_TYPE_PORT + || mdp->origin.type == ERTS_MON_TYPE_TIME_OFFSET + || mdp->origin.type == ERTS_MON_TYPE_DIST_PROC + || mdp->origin.type == ERTS_MON_TYPE_DIST_PORT); + erts_pid_ref_delete(mdp->ref); + } + switch (mdp->origin.type) { case ERTS_MON_TYPE_ALIAS: ERTS_ML_ASSERT(!(mdp->origin.flags & ERTS_ML_FLG_TAG)); |