diff options
author | Sverker Eriksson <[email protected]> | 2012-02-23 14:45:42 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2012-02-23 14:45:42 +0100 |
commit | 225da20b097ad73291cf48ba2782c64762163a46 (patch) | |
tree | f6901cf50f16eb19a0617be068bec613077823a2 /lib | |
parent | bbd8182e4b4ed116743f81ff456b53b86b1bea8f (diff) | |
parent | 3398aa592af611b84edad4fa56e88379df6d1735 (diff) | |
download | otp-225da20b097ad73291cf48ba2782c64762163a46.tar.gz otp-225da20b097ad73291cf48ba2782c64762163a46.tar.bz2 otp-225da20b097ad73291cf48ba2782c64762163a46.zip |
Merge branch 'maint'
Diffstat (limited to 'lib')
-rw-r--r-- | lib/stdlib/test/ets_SUITE.erl | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/stdlib/test/ets_SUITE.erl b/lib/stdlib/test/ets_SUITE.erl index 101828fdef..59532b65a0 100644 --- a/lib/stdlib/test/ets_SUITE.erl +++ b/lib/stdlib/test/ets_SUITE.erl @@ -72,6 +72,7 @@ exit_many_many_tables_owner/1]). -export([write_concurrency/1, heir/1, give_away/1, setopts/1]). -export([bad_table/1, types/1]). +-export([otp_9932/1]). -export([otp_9423/1]). -export([init_per_testcase/2, end_per_testcase/2]). @@ -145,6 +146,7 @@ all() -> exit_many_large_table_owner, exit_many_tables_owner, exit_many_many_tables_owner, write_concurrency, heir, give_away, setopts, bad_table, types, + otp_9932, otp_9423]. groups() -> @@ -5434,6 +5436,22 @@ types_do(Opts) -> ?line verify_etsmem(EtsMem). +%% OTP-9932: Memory overwrite when inserting large integers in compressed bag. +%% Will crash with segv on 64-bit opt if not fixed. +otp_9932(Config) when is_list(Config) -> + T = ets:new(xxx, [bag, compressed]), + Fun = fun(N) -> + Key = {1316110174588445 bsl N,1316110174588583 bsl N}, + S = {Key, Key}, + true = ets:insert(T, S), + [S] = ets:lookup(T, Key), + true = ets:insert(T, S), + [S] = ets:lookup(T, Key) + end, + lists:foreach(Fun, lists:seq(0, 16)), + ets:delete(T). + + otp_9423(doc) -> ["vm-deadlock caused by race between ets:delete and others on write_concurrency table"]; otp_9423(Config) when is_list(Config) -> InitF = fun(_) -> {0,0} end, |