File 2724-write_concurrency-auto-Fix-missing-destroy-of-old-lo.patch of Package erlang
From 5ca4de5cc4d34e57eac904390f33f3ad8c69e127 Mon Sep 17 00:00:00 2001
From: Kjell Winblad <kjellwinblad@gmail.com>
Date: Wed, 22 Sep 2021 10:22:10 +0200
Subject: [PATCH 4/8] {write_concurrency, auto}: Fix missing destroy of old
lock array
---
erts/emulator/beam/erl_db_hash.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/erts/emulator/beam/erl_db_hash.c b/erts/emulator/beam/erl_db_hash.c
index 56e5729867..fd79dd3344 100644
--- a/erts/emulator/beam/erl_db_hash.c
+++ b/erts/emulator/beam/erl_db_hash.c
@@ -395,12 +395,15 @@ void erl_db_hash_adapt_no_locks(DbTable* tb) {
ERTS_ASSERT(total_new == total_old);
}
#endif
- erts_db_free(ERTS_ALC_T_DB_SEG, tb, old_locks, sizeof(DbTableHashFineLockSlot) * old_no_locks);
calc_shrink_limit(tbl);
erts_atomic_set_nob(&tbl->lock_array_resize_state, DB_HASH_LOCK_ARRAY_RESIZE_STATUS_NORMAL);
erts_rwmtx_rwunlock(&tb->common.rwlock);
+ for (i = 0; i < old_no_locks; i++) {
+ erts_rwmtx_destroy(&old_locks[i].u.lck_ctr.lck);
+ }
+ erts_db_free(ERTS_ALC_T_DB_SEG, tb, old_locks, sizeof(DbTableHashFineLockSlot) * old_no_locks);
}
}
--
2.31.1