diff options
author | Rickard Green <rickard@erlang.org> | 2023-04-24 11:52:30 +0200 |
---|---|---|
committer | Rickard Green <rickard@erlang.org> | 2023-04-24 11:52:30 +0200 |
commit | d5b3b485541c062adccc49c4b6f3f67d1545e730 (patch) | |
tree | 794922fcce545b1bb18e1ecb3773aecf96abc4fe | |
parent | 25a97a1e306fd10f01849758c7c3ef8097c2e670 (diff) | |
parent | f5a9c68de0523608c0cb96fd870b671305b5c2eb (diff) | |
download | erlang-d5b3b485541c062adccc49c4b6f3f67d1545e730.tar.gz |
Merge branch 'rickard/mon-link-dbg-fix' into maint
* rickard/mon-link-dbg-fix:
[erts] Fix debug functionalty for monitors/links
-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, |