DebugAllocatorDeinit
Description
Tear down a DebugAllocator. Iterates live first and emits a LOG_ERROR for each still-live allocation with its captured alloc trace. Releases all backing storage (heap / meta / page-managed pages) and clears the struct. Enforces the thread-affinity check – calling from a thread other than the one that ran DebugAllocatorInit aborts via LOG_FATAL.
Parameters
| Name | Direction | Description |
|---|---|---|
self |
in,out | DebugAllocator instance, or NULL / uninitialised. |
Success
Function returns. Any still-live allocations have been logged with their captured traces; heap / meta are deinitialised; the struct is fully zeroed and cannot be used until re-initialised. force_page_backing’d regions remain mprotected and stay mapped until process exit (documented trade-off).
Failure
No action when self is NULL or __magic does not match DEBUG_ALLOCATOR_MAGIC. Cross-thread call aborts via LOG_FATAL.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Default.h:99:
///
#if FEATURE_DEFAULT_ALLOC_DEBUG
# define DefaultAllocatorDeinit(ptr) DebugAllocatorDeinit(ptr)
#else
# define DefaultAllocatorDeinit(ptr) HeapAllocatorDeinit(ptr)- In
Debug.c:455:
// ---------------------------------------------------------------------------
void DebugAllocatorDeinit(DebugAllocator *self) {
if (!self || !MAGIC_MATCHES(self->base.__magic, DEBUG_ALLOCATOR_MAGIC))
return;- In
Pdb.Blind.c:263:
// No heap write may have overrun any allocation (canary intact).
ok = ok && DebugAllocatorOverflows(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Pdb.Blind.c:303:
PdbDeinit(&pdb);
ok = ok && DebugAllocatorOverflows(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
} ok = ok && DebugAllocatorLiveCount(&alloc) == baseline;
DebugAllocatorDeinit(&alloc);
return ok;
}- In
Http.Leak.c:58:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Http.Leak.c:98:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Http.Leak.c:128:
bool ok = (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Http.Leak.c:173:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
} SymbolResolver res;
if (!SymbolResolverInit(&res, ALLOCATOR_OF(&alloc))) {
DebugAllocatorDeinit(&alloc);
return false;
}
SymbolResolverDeinit(&res);
DebugAllocatorDeinit(&alloc);
return ok;
} SymbolResolver res;
if (!SymbolResolverInit(&res, ALLOCATOR_OF(&alloc))) {
DebugAllocatorDeinit(&alloc);
return false;
}
SymbolResolverDeinit(&res);
DebugAllocatorDeinit(&alloc);
return ok;
} SymbolResolver res;
if (!SymbolResolverInit(&res, ALLOCATOR_OF(&alloc))) {
DebugAllocatorDeinit(&alloc);
return false;
}
SymbolResolverDeinit(&res);
DebugAllocatorDeinit(&alloc);
return ok;
} SymbolResolver res;
if (!SymbolResolverInit(&res, ALLOCATOR_OF(&alloc))) {
DebugAllocatorDeinit(&alloc);
return false;
}
SymbolResolverDeinit(&res);
DebugAllocatorDeinit(&alloc);
return ok;
} SymbolResolver res;
if (!SymbolResolverInit(&res, ALLOCATOR_OF(&alloc))) {
DebugAllocatorDeinit(&alloc);
return false;
} ok = ok && DebugAllocatorLiveCount(&alloc) == baseline;
DebugAllocatorDeinit(&alloc);
return ok;
}- In
SysDns.Api.c:792:
bool ok = grew && back && r.allocator == NULL;
DebugAllocatorDeinit(&alloc);
return ok;
}- In
Float.Leak.c:48:
bool ok = LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:59:
bool ok = LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:76:
bool ok = LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:97:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:119:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:141:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:161:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:185:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:210:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:234:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:257:
FloatDeinit(&b);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:278:
StrDeinit(&out);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:293:
StrDeinit(&out);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:313:
FloatDeinit(&v);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:338:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:361:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:384:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:407:
IntDeinit(&b);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:422:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:437:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:452:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:467:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:484:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:501:
IntDeinit(&b);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:516:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:531:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:546:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:561:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:578:
IntDeinit(&b);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:593:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:608:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:623:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:638:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:655:
IntDeinit(&b);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:670:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:685:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:700:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:715:
FloatDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:736:
IntDeinit(&b);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:750:
FloatDeinit(&a);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:764:
FloatDeinit(&a);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:778:
FloatDeinit(&a);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:792:
FloatDeinit(&a);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Float.Leak.c:820:
IntDeinit(&r);
bool ok = LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
} if (!pushed) {
ProcMapsDeinit(&pm);
DebugAllocatorDeinit(&alloc);
return false;
}
ProcMapsDeinit(&pm);
DebugAllocatorDeinit(&alloc);
return ok;
}
GraphDeinit(&graph);
DebugAllocatorDeinit(&dbg);
return result;
}
GraphDeinit(&graph);
DebugAllocatorDeinit(&dbg);
return result;
}- In
Dns.Leak.c:56:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Dns.Leak.c:124:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Dns.Leak.c:152:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Blind.c:41:
StrDeinit(out);
bool ok = (DebugAllocatorLiveCount(dbg) == 0);
DebugAllocatorDeinit(dbg);
return ok;
}- In
Io.Blind.c:1115:
AllocatorFree(&dbg.base, s);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Blind.c:1194:
BitVecDeinit(&bv);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Blind.c:1219:
BitVecDeinit(&bv);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Blind.c:1232:
BitVecDeinit(&bv);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Blind.c:1253:
IntDeinit(&v);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Blind.c:1320:
FloatDeinit(&f);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Blind.c:1337:
FloatDeinit(&f);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:49:
ok = ok && DebugAllocatorOverflows(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:60:
bool ok = (p == NULL) && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:74:
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:90:
bool ok = DebugAllocatorOverflows(&dbg) == 1;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:107:
ok = ok && DebugAllocatorLiveBytes(&dbg) == (32 + 48);
DebugAllocatorDeinit(&dbg); // logs the leaks
return ok;
}- In
AllocDebug.c:138:
if (p2)
AllocatorFree(adbg, p2);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:160:
if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:191:
ok = ok && (VecPtrAt(&dbg.freed, 2)->ptr == p3) && (VecPtrAt(&dbg.freed, 2)->requested_size == 64);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:215:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:240:
if (grown)
AllocatorFree(adbg, grown);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:253:
ok = ok && (nil == NULL) && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:266:
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:287:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:341:
ok = ok && (DebugAllocatorOverflows(&dbg) == 1);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:382:
ok = ok && (VecPtrAt(&dbg.freed, 0)->alloc_trace_n == live_n);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:417:
ok = ok && match;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:440:
ok = ok && (VecPtrAt(&dbg.freed, 0)->free_trace_n == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:466:
ok = ok && (VecPtrAt(&dbg.freed, 0)->free_trace_n == 2);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:491:
ok = ok && (VecPtrAt(&dbg.freed, 0)->free_trace_n <= DEBUG_ALLOCATOR_MAX_TRACE);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:509:
ok = ok && (AllocatorDeallocations(adbg) == 1);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:536:
ok = ok && (AllocatorBytesInUse(adbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:558:
ok = ok && (DebugAllocatorOverflows(&dbg) == 0);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:622:
AllocatorFree(adbg, p);
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:641:
if (p2)
AllocatorFree(adbg, p2);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:663:
// still 100 after frees (cumulative)
ok = ok && (AllocatorBytesRequested(adbg) == 100);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:680:
AllocatorFree(adbg, p);
ok = ok && (AllocatorBytesInUse(adbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:700:
// peak does not shrink on free
ok = ok && (AllocatorPeakBytesInUse(adbg) == 512);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:720:
if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:744:
if (small)
AllocatorFree(adbg, small);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:765:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:793:
if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:818:
if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:842:
if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:867:
ok = ok && (DebugAllocatorOverflows(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:888:
AllocatorFree(adbg, buf);
ok = ok && (DebugAllocatorOverflows(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:936:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:958:
if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
AllocDebug.c:985:
// The canary sits exactly at offset n; a one-past write corrupts it.
ok = ok && (DebugAllocatorOverflows(&dbg) == 1);
DebugAllocatorDeinit(&dbg);
return ok;
} if (grown)
AllocatorFree(adbg, grown);
DebugAllocatorDeinit(&dbg);
return ok;
} ok = ok && (DebugAllocatorOverflows(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
} if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
} AllocatorFree(adbg, q);
dbg.bytes_in_use = 0;
DebugAllocatorDeinit(&dbg);
return ok;
} AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
} if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
} }
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Pdb.c:2397:
Buf in = BufInit(base);
if (!BufReserve(&in, sizeof(sblob))) {
DebugAllocatorDeinit(&dbg);
return false;
}- In
Pdb.c:2414:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Pdb.c:2432:
bool ok = PdbOpenFromMemoryCopy(&pdb, xblob, sizeof(xblob), base);
if (!ok) {
DebugAllocatorDeinit(&dbg);
return false;
}- In
Pdb.c:2443:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Str.Init.c:300:
StrDeinit(&s);
DebugAllocatorDeinit(&dbg);
return pass;
}- In
Str.Init.c:321:
}
DebugAllocatorDeinit(&dbg);
return result;
}- In
Dns.Blind.c:44:
bool match = (ok == false) && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return match;
}- In
Dns.Blind.c:67:
bool match = (ok == false) && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return match;
}- In
Dns.Blind.c:91:
bool match = (ok == false);
DebugAllocatorDeinit(&dbg);
return match;
}- In
Dns.Blind.c:218:
DnsResponseDeinit(&resp);
DebugAllocatorDeinit(&dbg);
return match;
}- In
Graph.Leak.c:95:
bool ok = LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:48:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:67:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:86:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:105:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:124:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:143:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:160:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:187:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:209:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:228:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:247:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:272:
IntDeinit(&r3);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:300:
IntDeinit(&m2);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:319:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:348:
IntDeinit(&v);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:371:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:395:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:415:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:440:
IntDeinit(&rem);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:466:
IntDeinit(&rem);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:483:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:500:
IntDeinit(&nsq);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:517:
IntDeinit(&npw);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:548:
IntDeinit(&n2);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:573:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:595:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:617:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:644:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:665:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:684:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:705:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:726:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:748:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:772:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:794:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:815:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:841:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:864:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:886:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:905:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:925:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:945:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:964:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:983:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1007:
IntDeinit(&composite);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1024:
IntDeinit(&n);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1043:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1066:
IntDeinit(&r1);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1084:
IntDeinit(&v);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1109:
IntDeinit(&out);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1131:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1151:
IntDeinit(&r);
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Leak.c:1189:
ok = ok && LEAK_CLEAN(dbg);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
BitVec.Leak.c:52:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
} FileRemove((Zstr)pdb_side);
(void)fx;
DebugAllocatorDeinit(&dbg);
return result;
}
FileRemove((Zstr)pe_path);
DebugAllocatorDeinit(&dbg);
return result;
} FileRemove(pe_name);
FileRemove(pdb_name);
DebugAllocatorDeinit(&dbg);
return result;
}
FileRemove((Zstr)pe_path);
DebugAllocatorDeinit(&dbg);
return result;
} FileRemove((Zstr)pe_path);
FileRemove((Zstr)pdb_side);
DebugAllocatorDeinit(&dbg);
return result;
}
fixture_remove(&fx);
DebugAllocatorDeinit(&dbg);
return result;
} fixture_remove(&fa);
fixture_remove(&fb);
DebugAllocatorDeinit(&dbg);
return result;
}
fixture_remove(&fx);
DebugAllocatorDeinit(&dbg);
return result;
}
fixture_remove(&fx);
DebugAllocatorDeinit(&dbg);
return result;
} FileRemove((Zstr)pe_path);
FileRemove((Zstr)pdb_path);
DebugAllocatorDeinit(&dbg);
return result;
} FileRemove((Zstr)pe_path);
FileRemove((Zstr)pdb_path);
DebugAllocatorDeinit(&dbg);
return result;
}
fixture_remove(&fx);
DebugAllocatorDeinit(&dbg);
return result;
} ok = ok && (AllocatorBytesInUse(adbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
} if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
} if (p)
AllocatorFree(adbg, p);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
ProcMaps.c:314:
ProcMaps maps;
if (!proc_maps_load(&maps, base)) {
DebugAllocatorDeinit(&dbg);
return false;
}- In
ProcMaps.c:329:
ok = ok && after == before;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Map.Remove.c:363:
result = result && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return result;
}- In
BitVec.Mut.c:56:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
BitVec.Mut.c:91:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
BitVec.Mut.c:135:
DefaultAllocatorDeinit(&palloc);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Math.c:3410:
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
} FileRemove(dsym_path);
DirRemoveAll("/tmp/misra_bl_dwarf3.dSYM");
DebugAllocatorDeinit(&dbg);
return ok;
}- In
MachoCache.c:636:
FileRemove(bin_path);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
MachoCache.c:693:
FileRemove(bin_a);
FileRemove(bin_b);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
MachoCache.c:730:
FileRemove(dsym_path);
DirRemoveAll("/tmp/misra_mc_dsym.dSYM");
DebugAllocatorDeinit(&dbg);
return ok;
}- In
MachoCache.c:769:
FileRemove(dsym_path);
DirRemoveAll("/tmp/misra_mc_uuidmiss.dSYM");
DebugAllocatorDeinit(&dbg);
return ok;
}- In
MachoCache.c:814:
FileRemove(dsym_path);
DirRemoveAll("/tmp/misra_mc_dwarf.dSYM");
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Blind.c:74:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Blind.c:98:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Blind.c:122:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Blind.c:154:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Blind.c:173:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Blind.c:190:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Int.Blind.c:211:
ok = ok && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
SysDns.Mut.c:192:
bool back = DebugAllocatorLiveCount(&alloc) == baseline;
DebugAllocatorDeinit(&alloc);
return parsed && back;
}- In
SysDns.Mut.c:215:
bool back = DebugAllocatorLiveCount(&alloc) == baseline;
DebugAllocatorDeinit(&alloc);
return parsed && back;
}- In
Pe.Blind.c:122:
Pe pe;
if (!PeOpenFromMemoryCopy(&pe, blob, sizeof(blob), base)) {
DebugAllocatorDeinit(&alloc);
return false;
}- In
Pe.Blind.c:132:
PeDeinit(&pe);
DebugAllocatorDeinit(&alloc);
return ok;
}- In
Io.Leak.c:70:
FloatDeinit(&v);
HeapAllocatorDeinit(&fa);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:96:
FloatDeinit(&v);
HeapAllocatorDeinit(&fa);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:122:
FloatDeinit(&v);
HeapAllocatorDeinit(&fa);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:149:
FloatDeinit(&v);
HeapAllocatorDeinit(&fa);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:185:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:212:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:237:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:261:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:281:
StrDeinit(&out); \
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0); \
DebugAllocatorDeinit(&dbg); \
return ok- In
Io.Leak.c:304:
StrDeinit(&out);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
StrDeinit(&s);
HeapAllocatorDeinit(&va);- In
Io.Leak.c:317:
StrDeinit(&out);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
IntDeinit(&v);
HeapAllocatorDeinit(&va);- In
Io.Leak.c:330:
StrDeinit(&out);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
FloatDeinit(&v);
HeapAllocatorDeinit(&va);- In
Io.Leak.c:344:
StrDeinit(&out);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
BitVecDeinit(&v);
HeapAllocatorDeinit(&va);- In
Io.Leak.c:367:
StrDeinit(&out);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
StrDeinit(&s);
HeapAllocatorDeinit(&sa);- In
Io.Leak.c:388:
StrDeinit(&out);
ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
FloatDeinit(&f);
HeapAllocatorDeinit(&fa);- In
Io.Leak.c:409:
StrReadFmt(p, fmt, s); // reader frees s on the unterminated/error branch
bool ok = (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:436:
StrReadFmt(p, "{}", s);
bool ok = (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:449:
BitVecDeinit(&bv);
bool ok = (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Io.Leak.c:470:
FloatDeinit(&fv);
bool ok = (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
} bool ok = (rc == ARG_RUN_HELP) && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Dwarf.Mut.c:535:
bool ok = !built && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Dwarf.Mut.c:585:
bool ok = !built && (DebugAllocatorLiveCount(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
MachO.c:1507:
bool ok = !opened && DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Dwarf.c:2637:
Elf elf;
if (!ElfOpenFromMemoryCopy(&elf, elfbuf, (size)elf_len, base)) {
DebugAllocatorDeinit(&dbg);
return false;
}- In
Dwarf.c:2660:
ElfDeinit(&elf);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Dwarf.c:2683:
Elf elf;
if (!ElfOpenFromMemoryCopy(&elf, elfbuf, (size)elf_len, base)) {
DebugAllocatorDeinit(&dbg);
return false;
}- In
Dwarf.c:2707:
ElfDeinit(&elf);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Blind.c:37:
ok = DebugAllocatorLiveCount(&dbg) == 0;
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Leak.c:54:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Leak.c:87:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Leak.c:119:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}- In
Leak.c:162:
ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
DebugAllocatorDeinit(&dbg);
return ok;
}