hashmap: add an explicit assert() for detecting when objects migrated between threads
When clients don't follow protocol and use the same object from different threads, then we previously would silently corrupt memory. With this assert we'll fail with an assert(). This doesn't fix anything but certainly makes mis-uses easier to detect and debug. Triggered by https://bugzilla.redhat.com/show_bug.cgi?id=1609349
This commit is contained in:
+4
-2
@@ -869,9 +869,11 @@ static void hashmap_free_no_clear(HashmapBase *h) {
|
||||
assert_se(pthread_mutex_unlock(&hashmap_debug_list_mutex) == 0);
|
||||
#endif
|
||||
|
||||
if (h->from_pool)
|
||||
if (h->from_pool) {
|
||||
/* Ensure that the object didn't get migrated between threads. */
|
||||
assert_se(is_main_thread());
|
||||
mempool_free_tile(hashmap_type_info[h->type].mempool, h);
|
||||
else
|
||||
} else
|
||||
free(h);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user