diff options
author | Erlang/OTP <otp@erlang.org> | 2023-04-25 17:09:01 +0200 |
---|---|---|
committer | Erlang/OTP <otp@erlang.org> | 2023-04-25 17:09:01 +0200 |
commit | 558c7ec9a711e784d0e307ffd100cb4fe744f3cd (patch) | |
tree | 85f6168fc98aca71c6d49643280b60faf2089895 /erts/emulator/beam | |
parent | 3427ff192d1503362d86b3a588574593b3366496 (diff) | |
parent | f5a9c68de0523608c0cb96fd870b671305b5c2eb (diff) | |
download | erlang-558c7ec9a711e784d0e307ffd100cb4fe744f3cd.tar.gz |
Merge branch 'rickard/mon-link-dbg-fix' into maint-25
* rickard/mon-link-dbg-fix:
[erts] Fix debug functionalty for monitors/links
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/erl_monitor_link.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/erts/emulator/beam/erl_monitor_link.c b/erts/emulator/beam/erl_monitor_link.c index e103807940..c25ca8d5e5 100644 --- a/erts/emulator/beam/erl_monitor_link.c +++ b/erts/emulator/beam/erl_monitor_link.c @@ -703,10 +703,15 @@ erts_debug_monitor_tree_destroying_foreach(ErtsMonitor *root, void *arg, void *vysp) { - void *tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE, - sizeof(ErtsMonLnkYieldState)); + void *tmp_vysp; Sint reds; - sys_memcpy(tmp_vysp, tmp_vysp, sizeof(ErtsMonLnkYieldState)); + if (!vysp) + tmp_vysp = NULL; + else { + tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE, + sizeof(ErtsMonLnkYieldState)); + sys_memcpy(tmp_vysp, tmp_vysp, sizeof(ErtsMonLnkYieldState)); + } do { reds = ml_rbt_foreach_yielding((ErtsMonLnkNode *) root, (ErtsMonLnkNodeFunc) func, @@ -1348,10 +1353,15 @@ erts_debug_link_tree_destroying_foreach(ErtsLink *root, void *arg, void *vysp) { - void *tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE, - sizeof(ErtsMonLnkYieldState)); + void *tmp_vysp; Sint reds; - sys_memcpy(tmp_vysp, vysp, sizeof(ErtsMonLnkYieldState)); + if (!vysp) + tmp_vysp = NULL; + else { + tmp_vysp = erts_alloc(ERTS_ALC_T_ML_YIELD_STATE, + sizeof(ErtsMonLnkYieldState)); + sys_memcpy(tmp_vysp, vysp, sizeof(ErtsMonLnkYieldState)); + } do { reds = ml_rbt_foreach_yielding((ErtsMonLnkNode *) root, (ErtsMonLnkNodeFunc) func, |