aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/test/ets_SUITE.erl
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2018-11-16 19:49:11 +0100
committerSverker Eriksson <[email protected]>2018-11-16 19:49:11 +0100
commit625a9838ee4e494d5c055986ceff66a32c38a05c (patch)
tree94afeb496ab45affa61d5fe514a5f6a36a59a136 /lib/stdlib/test/ets_SUITE.erl
parent5b6eff964a61b32c1d02464e8fc6ef0c79a4badc (diff)
downloadotp-625a9838ee4e494d5c055986ceff66a32c38a05c.tar.gz
otp-625a9838ee4e494d5c055986ceff66a32c38a05c.tar.bz2
otp-625a9838ee4e494d5c055986ceff66a32c38a05c.zip
erts: Fix offheap leak of ets catree tmp iteration key
Also fix erts_debug:get_internal_status(node_and_dist_references) for catree to also search route node keys for offheap stuff.
Diffstat (limited to 'lib/stdlib/test/ets_SUITE.erl')
-rw-r--r--lib/stdlib/test/ets_SUITE.erl18
1 files changed, 6 insertions, 12 deletions
diff --git a/lib/stdlib/test/ets_SUITE.erl b/lib/stdlib/test/ets_SUITE.erl
index cc369979f7..501588ad44 100644
--- a/lib/stdlib/test/ets_SUITE.erl
+++ b/lib/stdlib/test/ets_SUITE.erl
@@ -6052,7 +6052,7 @@ smp_ordered_iteration(Config) when is_list(Config) ->
smp_ordered_iteration_do(Opts) ->
KeyRange = 1000,
- OffHeap = fun() -> dummy end, % To exercise key copy/destroy code.
+ OffHeap = erts_test_utils:mk_ext_pid({a@b,1}, 4711, 1),
KeyFun = fun(K, Type) ->
{K div 10, K rem 10, Type, OffHeap}
end,
@@ -6129,6 +6129,9 @@ smp_ordered_iteration_do(Opts) ->
io:format("Stats = ~p\n", [ets:info(T,stats)]),
io:format("Rounds = ~p\n", [Rounds]),
true = ets:delete(T),
+
+ %% Verify no leakage of offheap key data
+ ok = erts_test_utils:check_node_dist(),
ok.
incr_counter(Name, Counters) ->
@@ -7455,9 +7458,6 @@ is_redundant_opts_combo(Opts) ->
key_range(Opts, KeyRange) ->
[{key_range, KeyRange} | Opts].
-key_range_fun(Opts, KeyRange, KeyFun) ->
- [{key_range, KeyRange}, {key_fun, KeyFun} | Opts].
-
ets_new(Name, Opts0) ->
{KeyRange, Opts1} = case lists:keytake(key_range, 1, Opts0) of
{value, {key_range, KR}, Rest1} ->
@@ -7467,14 +7467,8 @@ ets_new(Name, Opts0) ->
end,
ets_new(Name, Opts1, KeyRange).
-ets_new(Name, Opts1, KeyRange) ->
- {KeyFun, Opts2} = case lists:keytake(key_fun, 1, Opts1) of
- {value, {key_fun, KF}, Rest2} ->
- {KF, Rest2};
- false ->
- {fun id/1, Opts1}
- end,
- ets_new(Name, Opts2, KeyRange, KeyFun).
+ets_new(Name, Opts, KeyRange) ->
+ ets_new(Name, Opts, KeyRange, fun id/1).
ets_new(Name, Opts0, KeyRange, KeyFun) ->
{CATree, Stimulate, RevOpts} =