diff options
author | Rickard Green <rickard@erlang.org> | 2023-04-24 11:52:56 +0200 |
---|---|---|
committer | Rickard Green <rickard@erlang.org> | 2023-04-24 11:52:56 +0200 |
commit | 17d5be464eb8f9f95c26ac9c92b040cdf8447fa0 (patch) | |
tree | bbee32b48ebd9eb749f2b1cc9237c321475cc037 /erts/emulator/beam | |
parent | ea65c2c9914f666a4834b543afe75f5e8c9e3a6c (diff) | |
parent | d5b3b485541c062adccc49c4b6f3f67d1545e730 (diff) | |
download | erlang-17d5be464eb8f9f95c26ac9c92b040cdf8447fa0.tar.gz |
Merge branch 'maint'
* maint:
[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 2c7b765520..0c1eef68f0 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, @@ -1338,10 +1343,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, |