Skip to content

Commit 7766d09

Browse files
committed
DEBUG umfMemoryTrackerAddIpcSegment()
1 parent 065a925 commit 7766d09

2 files changed

Lines changed: 32 additions & 2 deletions

File tree

src/critnib/critnib.c

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -588,8 +588,12 @@ void *critnib_remove(struct critnib *c, word key, void **ref) {
588588
del_leaf:
589589
value = k->value;
590590
if (c->cb_free_leaf) {
591-
utils_atomic_store_release_ptr(&k->to_be_freed, value);
592-
utils_atomic_store_release_ptr(&k->value, NULL);
591+
fprintf(stderr, "%p critnib_remove_IN(value=%p/%p, ref_count=%lu)\n",
592+
(void *)k->key, value, k->to_be_freed, k->ref_count);
593+
if (value) {
594+
utils_atomic_store_release_ptr(&k->to_be_freed, value);
595+
utils_atomic_store_release_ptr(&k->value, NULL);
596+
}
593597
*ref = k;
594598
}
595599
c->pending_del_leaves[del] = k;
@@ -607,20 +611,32 @@ int critnib_release(struct critnib *c, void *ref) {
607611
return -1;
608612
}
609613

614+
fprintf(stderr, ">>> critnib_release(ref=%p)\n", ref);
615+
610616
struct critnib_leaf *k = (struct critnib_leaf *)ref;
611617

612618
uint64_t ref_count;
613619
utils_atomic_load_acquire_u64(&k->ref_count, &ref_count);
614620

615621
if (ref_count == 0) {
622+
fprintf(stderr,
623+
"%p critnib_release(value=%p/%p, ref_count=0) RETURN ! k=%p\n",
624+
(void *)k->key, k->value, k->to_be_freed, k);
616625
return -1;
617626
}
618627

619628
/* decrement the reference count */
620629
if (utils_atomic_decrement_u64(&k->ref_count) == 1) {
621630
void *to_be_freed = NULL;
622631
utils_atomic_load_acquire_ptr(&k->to_be_freed, &to_be_freed);
632+
fprintf(stderr,
633+
"%p critnib_release(value=%p/%p, ref_count=0) ==0 k=%p\n",
634+
(void *)k->key, k->value, to_be_freed, k);
623635
if (to_be_freed) {
636+
fprintf(
637+
stderr,
638+
"%p c->cb_free_leaf(key=%p, value=%p/%p, ref_count=0) k=%p\n",
639+
to_be_freed, (void *)k->key, k->value, to_be_freed, k);
624640
utils_atomic_store_release_ptr(&k->to_be_freed, NULL);
625641
c->cb_free_leaf(c->leaf_allocator, to_be_freed);
626642
}
@@ -639,6 +655,10 @@ int critnib_release(struct critnib *c, void *ref) {
639655
}
640656

641657
return 0;
658+
} else {
659+
fprintf(stderr,
660+
"%p critnib_release(value=%p/%p, ref_count=%lu) ELSE k=%p\n",
661+
(void *)k->key, k->value, k->to_be_freed, k->ref_count, k);
642662
}
643663

644664
#ifndef NDEBUG

src/provider/provider_tracking.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,8 @@ umfMemoryTrackerAddIpcSegment(umf_memory_tracker_handle_t hTracker,
415415
int ret =
416416
critnib_insert(hTracker->ipc_segments_map, (uintptr_t)ptr, value, 0);
417417
if (ret == 0) {
418+
fprintf(stderr, "%p critnib_insert(value=%p) %s:%i\n", ptr, value,
419+
__FILE__, __LINE__);
418420
LOG_DEBUG("IPC memory region is added, tracker=%p, ptr=%p, size=%zu, "
419421
"provider=%p, cache_entry=%p",
420422
(void *)hTracker, ptr, size, (void *)provider,
@@ -444,7 +446,14 @@ umfMemoryTrackerRemoveIpcSegment(umf_memory_tracker_handle_t hTracker,
444446
void *ref_value = NULL;
445447
void *value =
446448
critnib_remove(hTracker->ipc_segments_map, (uintptr_t)ptr, &ref_value);
449+
fprintf(stderr, "%p critnib_remove(ptr=%p, value=%p) %s:%i\n", ptr, ptr,
450+
value, __FILE__, __LINE__);
447451
if (!value) {
452+
if (ref_value) {
453+
fprintf(stderr, "%p critnib_release %s:%i NO VALUE!\n", ptr,
454+
__FILE__, __LINE__);
455+
critnib_release(hTracker->ipc_segments_map, ref_value);
456+
}
448457
LOG_ERR("pointer %p not found in the ipc_segments_map", ptr);
449458
return UMF_RESULT_ERROR_UNKNOWN;
450459
}
@@ -457,6 +466,7 @@ umfMemoryTrackerRemoveIpcSegment(umf_memory_tracker_handle_t hTracker,
457466
(void *)v->ipc_cache_value);
458467

459468
assert(ref_value);
469+
fprintf(stderr, "%p critnib_release %s:%i\n", ptr, __FILE__, __LINE__);
460470
critnib_release(hTracker->ipc_segments_map, ref_value);
461471

462472
return UMF_RESULT_SUCCESS;

0 commit comments

Comments
 (0)