diff --git a/erts/emulator/beam/erl_db.c b/erts/emulator/beam/erl_db.c index be15a0a4dff1..f043eed51f50 100644 --- a/erts/emulator/beam/erl_db.c +++ b/erts/emulator/beam/erl_db.c @@ -450,19 +450,17 @@ free_dbtable(void *vtb) erts_flxctr_add(&tb->common.counters, ERTS_DB_TABLE_MEM_COUNTER_ID, -((Sint)erts_flxctr_nr_of_allocated_bytes(&tb->common.counters))); + if (!DB_LOCK_FREE(tb)) { ERTS_DB_ALC_MEM_UPDATE_(tb, erts_rwmtx_size(&tb->common.rwlock), 0); + erts_rwmtx_destroy(&tb->common.rwlock); + erts_mtx_destroy(&tb->common.fixlock); } - ASSERT(erts_flxctr_is_snapshot_ongoing(&tb->common.counters) || - sizeof(DbTable) == DB_GET_APPROX_MEM_CONSUMED(tb)); - ASSERT(is_immed(tb->common.heir_data)); - if (!DB_LOCK_FREE(tb)) { - erts_rwmtx_destroy(&tb->common.rwlock); - erts_mtx_destroy(&tb->common.fixlock); - } + ASSERT(erts_flxctr_is_snapshot_ongoing(&tb->common.counters) || + sizeof(DbTable) == DB_GET_APPROX_MEM_CONSUMED(tb)); if (tb->common.btid) erts_bin_release(tb->common.btid);