isc_symvalue_t symvalue;
if (sym_mctx == NULL) {
- isc_mem_create(&sym_mctx);
+ isc_mem_create("check-tool", &sym_mctx);
}
if (symtab == NULL) {
}
isc_commandline_reset = true;
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
while ((c = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != EOF) {
switch (c) {
usage();
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
if (!quiet) {
RUNTIME_CHECK(setup_logging(errout) == ISC_R_SUCCESS);
}
bool keyonly = false;
bool quiet = false;
int len;
+ const char *name = argv[0];
keydef = keyfile = RNDC_KEYFILE;
}
algname = dst_hmac_algorithm_totext(alg);
- isc_mem_create(&mctx);
+ isc_mem_create(name, &mctx);
isc_buffer_init(&key_txtbuffer, &key_txtsecret, sizeof(key_txtsecret));
generate_key(mctx, alg, keysize, &key_txtbuffer);
/* Use canonical algorithm name */
algname = dst_hmac_algorithm_totext(alg);
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
if (keyname == NULL) {
const char *suffix = NULL;
ISC_LOGMODULE_DEFAULT);
isc_log_setdebuglevel(0);
- isc_mem_setname(mctx, "dig");
mainloop = isc_loop_main(loopmgr);
}
setfatalcallback(cleanup);
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
isc_commandline_errprint = false;
usage();
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
isc_commandline_errprint = false;
usage();
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
isc_commandline_errprint = false;
usage();
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
isc_commandline_errprint = false;
}
isc_commandline_reset = true;
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
switch (ch) {
.now = isc_stdtime_now(),
};
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
isc_commandline_errprint = false;
usage();
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
isc_commandline_errprint = false;
usage();
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
setup_logging();
}
isc_commandline_reset = true;
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
isc_commandline_errprint = false;
return ISC_R_FAILURE;
}
- isc_mem_create(&mctx);
+ isc_mem_create("dlz", &mctx);
cd = isc_mem_get(mctx, sizeof(*cd));
*cd = (dlopen_data_t){
.mctx = mctx,
#if defined(HAVE_GEOIP2)
#define RTC(x) RUNTIME_CHECK((x) == ISC_R_SUCCESS)
isc_mem_t *mctx = NULL;
- isc_mem_create(&mctx);
+ isc_mem_create("geoip", &mctx);
RTC(cfg_parser_create(mctx, &parser));
RTC(named_config_parsedefaults(parser, &config));
RTC(cfg_map_get(config, "options", &defaults));
}
setup();
- isc_mem_setname(named_g_mctx, "main");
INSIST(named_g_server != NULL);
/*
journal = argv[4];
isc_mem_debugging |= ISC_MEM_DEBUGRECORD;
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
logconfig = isc_logconfig_get();
isc_log_createandusechannel(
exit(EXIT_FAILURE);
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
dns_log_init();
}
isc_commandline_reset = true;
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
while ((ch = isc_commandline_parse(argc, argv, CMDLINE_FLAGS)) != -1) {
switch (ch) {
fatal("no file specified");
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
CHECKM(dns_dt_open(argv[0], dns_dtmode_file, mctx, &handle),
"dns_dt_openfile");
}
file = argv[0];
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
setup_logging(stderr);
if (upgrade) {
exit(EXIT_SUCCESS);
}
- isc_mem_create(&mctx);
+ isc_mem_create(argv[0], &mctx);
isc_lex_create(mctx, 256, &lex);
/*
To create a basic memory context, use:
isc_mem_t *mctx = NULL;
- isc_mem_create(&mctx);
+ isc_mem_create("name", &mctx);
When holding a persistent reference to a memory context it is advisable to
increment its reference counter using `isc_mem_attach()`. Do not just
unsigned int zonetype = 0;
unsigned int pflags = 0;
- isc_mem_create(&mctx);
+ isc_mem_create("misc", &mctx);
setup_logging();
dns_rdatacallbacks_init(&callbacks);
dns_db_t *db = NULL;
- isc_mem_create(&mctx);
+ isc_mem_create("fuzz", &mctx);
result = dns_db_create(mctx, ZONEDB_DEFAULT, dns_rootname,
dns_dbtype_zone, dns_rdataclass_in, 0, NULL,
&db);
fputs(c3, fd);
fclose(fd);
- isc_mem_create(&mctx);
+ isc_mem_create("fuzz", &mctx);
isc_loopmgr_create(mctx, 1, &loopmgr);
int
LLVMFuzzerInitialize(int *argc ISC_ATTR_UNUSED, char ***argv ISC_ATTR_UNUSED) {
- isc_mem_create(&mctx);
+ isc_mem_create("fuzz", &mctx);
output = isc_mem_get(mctx, output_len);
return 0;
TRACE("------------------------------------------------");
isc_mem_t *mctx = NULL;
- isc_mem_create(&mctx);
+ isc_mem_create("fuzz", &mctx);
isc_mem_setdestroycheck(mctx, true);
dns_qp_t *qp = NULL;
int
LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
isc_mem_t *mctx = NULL;
- isc_mem_create(&mctx);
+ isc_mem_create("fuzz", &mctx);
isc_lex_t *lex = NULL;
isc_token_t token;
LLVMFuzzerInitialize(int *argc ISC_ATTR_UNUSED, char ***argv ISC_ATTR_UNUSED) {
isc_lexspecials_t specials;
- isc_mem_create(&mctx);
+ isc_mem_create("fuzz", &mctx);
isc_lex_create(mctx, 64, &lex);
memset(specials, 0, sizeof(specials));
int
LLVMFuzzerInitialize(int *argc ISC_ATTR_UNUSED, char ***argv ISC_ATTR_UNUSED) {
- isc_mem_create(&mctx);
+ isc_mem_create("fuzz", &mctx);
isc_lex_create(mctx, 1024, &lex);
return 0;
int
LLVMFuzzerInitialize(int *argc ISC_ATTR_UNUSED, char ***argv ISC_ATTR_UNUSED) {
- isc_mem_create(&mctx);
+ isc_mem_create("fuzz", &mctx);
isc_lex_create(mctx, 1024, &lex);
return 0;
dns_resolver_attach(view->resolver, &adb->res);
isc_mem_attach(mem, &adb->mctx);
- isc_mem_create(&adb->hmctx);
- isc_mem_setname(adb->hmctx, "ADB_dynamic");
+ isc_mem_create("ADB_dynamic", &adb->hmctx);
isc_hashmap_create(adb->hmctx, ADB_HASH_BITS, &adb->names);
isc_rwlock_init(&adb->names_lock);
* This will be the cache memory context, which is subject
* to cleaning when the configured memory limits are exceeded.
*/
- isc_mem_create(&tmctx);
- isc_mem_setname(tmctx, "cache");
+ isc_mem_create("cache", &tmctx);
/*
* This will be passed to RBTDB to use for heaps. This is separate
* heavy load and could otherwise cause the cache to be cleaned too
* aggressively.
*/
- isc_mem_create(&hmctx);
- isc_mem_setname(hmctx, "cache_heap");
+ isc_mem_create("cache_heap", &hmctx);
/*
* For databases of type "qpcache" or "rbt" (which are the
void
dst__lib_initialize(void) {
- isc_mem_create(&dst__mctx);
- isc_mem_setname(dst__mctx, "dst");
+ isc_mem_create("dst", &dst__mctx);
dst__hmacmd5_init(&dst_t_func[DST_ALG_HMACMD5]);
dst__hmacsha1_init(&dst_t_func[DST_ALG_HMACSHA1]);
return result;
}
- isc_mem_create(&mctx);
- isc_mem_setname(mctx, "ADB");
+ isc_mem_create("ADB", &mctx);
dns_adb_create(mctx, view, &view->adb);
isc_mem_detach(&mctx);
zmgr->mctxpool = isc_mem_cget(zmgr->mctx, zmgr->workers,
sizeof(zmgr->mctxpool[0]));
for (size_t i = 0; i < zmgr->workers; i++) {
- isc_mem_create(&zmgr->mctxpool[i]);
- isc_mem_setname(zmgr->mctxpool[i], "zonemgr-mctxpool");
+ isc_mem_create("zonemgr-mctxpool", &zmgr->mctxpool[i]);
}
/* Key file I/O locks. */
isc__crypto_initialize(void) {
uint64_t opts = OPENSSL_INIT_LOAD_CONFIG;
- isc_mem_create(&isc__crypto_mctx);
- isc_mem_setname(isc__crypto_mctx, "OpenSSL");
+ isc_mem_create("OpenSSL", &isc__crypto_mctx);
isc_mem_setdestroycheck(isc__crypto_mctx, false);
#if !defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x30000000L
extern volatile void *isc__mem_malloc;
-#define isc_mem_create(cp) \
+#define isc_mem_create(name, cp) \
{ \
- isc__mem_create((cp)_ISC_MEM_FILELINE); \
+ isc__mem_create((name), (cp)_ISC_MEM_FILELINE); \
isc__mem_malloc = mallocx; \
ISC_INSIST(CMM_ACCESS_ONCE(isc__mem_malloc) != NULL); \
}
#else
-#define isc_mem_create(cp) isc__mem_create((cp)_ISC_MEM_FILELINE)
+#define isc_mem_create(name, cp) isc__mem_create((name), (cp)_ISC_MEM_FILELINE)
#endif
void
-isc__mem_create(isc_mem_t **_ISC_MEM_FLARG);
+isc__mem_create(const char *name, isc_mem_t **_ISC_MEM_FLARG);
/*!<
* \brief Create a memory context.
* mctxp != NULL && *mctxp == NULL */
/*@}*/
-#define isc_mem_create_arena(cp) isc__mem_create_arena((cp)_ISC_MEM_FILELINE)
+#define isc_mem_create_arena(name, cp) \
+ isc__mem_create_arena((name), (cp)_ISC_MEM_FILELINE)
void
-isc__mem_create_arena(isc_mem_t **_ISC_MEM_FLARG);
+isc__mem_create_arena(const char *name, isc_mem_t **_ISC_MEM_FLARG);
/*!<
* \brief Create a memory context that routs all its operations to a
* dedicated jemalloc arena (when available). When jemalloc is not
* Return the current reference count.
*/
-void
-isc_mem_setname(isc_mem_t *ctx, const char *name);
-/*%<
- * Name 'ctx'.
- *
- * Notes:
- *
- *\li Only the first 15 characters of 'name' will be copied.
- *
- * Requires:
- *
- *\li 'ctx' is a valid ctx.
- */
-
const char *
isc_mem_getname(isc_mem_t *ctx);
/*%<
isc_mem_t *mctx = NULL;
- isc_mem_create(&mctx);
+ isc_mem_create("log", &mctx);
isc__lctx = isc_mem_get(mctx, sizeof(*isc__lctx));
*isc__lctx = (isc_log_t){
UV_RUNTIME_CHECK(uv_prepare_init, r);
uv_handle_set_data(&loop->quiescent, loop);
- char name[16];
- snprintf(name, sizeof(name), "%s-%08" PRIx32, kind, tid);
- isc_mem_create(&loop->mctx);
- isc_mem_setname(loop->mctx, name);
+ isc_mem_create(kind, &loop->mctx);
isc_refcount_init(&loop->references, 1);
isc_managers_create(isc_mem_t **mctxp, uint32_t workers,
isc_loopmgr_t **loopmgrp, isc_nm_t **netmgrp) {
REQUIRE(mctxp != NULL && *mctxp == NULL);
- isc_mem_create(mctxp);
+ isc_mem_create("managers", mctxp);
INSIST(*mctxp != NULL);
- isc_mem_setname(*mctxp, "managers");
REQUIRE(loopmgrp != NULL && *loopmgrp == NULL);
isc_loopmgr_create(*mctxp, workers, loopmgrp);
isc_mutex_t lock;
bool checkfree;
isc_refcount_t references;
- char name[16];
+ char *name;
atomic_size_t inuse;
atomic_bool hi_called;
atomic_bool is_overmem;
}
static void
-mem_create(isc_mem_t **ctxp, unsigned int debugging, unsigned int flags,
- unsigned int jemalloc_flags) {
+mem_create(const char *name, isc_mem_t **ctxp, unsigned int debugging,
+ unsigned int flags, unsigned int jemalloc_flags) {
isc_mem_t *ctx = NULL;
REQUIRE(ctxp != NULL && *ctxp == NULL);
+ REQUIRE(name != NULL);
ctx = mallocx(sizeof(*ctx), jemalloc_flags);
INSIST(ctx != NULL);
.jemalloc_flags = jemalloc_flags,
.jemalloc_arena = ISC_MEM_ILLEGAL_ARENA,
.checkfree = true,
+ .name = strdup(name),
};
isc_mutex_init(&ctx->lock);
}
#endif /* if ISC_MEM_TRACKLINES */
+ free(ctx->name);
+
isc_mutex_destroy(&ctx->lock);
if (ctx->checkfree) {
}
}
-void
-isc_mem_setname(isc_mem_t *ctx, const char *name) {
- REQUIRE(VALID_CONTEXT(ctx));
-
- LOCK(&ctx->lock);
- strlcpy(ctx->name, name, sizeof(ctx->name));
- UNLOCK(&ctx->lock);
-}
-
const char *
isc_mem_getname(isc_mem_t *ctx) {
REQUIRE(VALID_CONTEXT(ctx));
#endif /* HAVE_JSON_C */
void
-isc__mem_create(isc_mem_t **mctxp FLARG) {
- mem_create(mctxp, isc_mem_debugging, isc_mem_defaultflags, 0);
+isc__mem_create(const char *name, isc_mem_t **mctxp FLARG) {
+ mem_create(name, mctxp, isc_mem_debugging, isc_mem_defaultflags, 0);
#if ISC_MEM_TRACKLINES
if ((isc_mem_debugging & ISC_MEM_DEBUGTRACE) != 0) {
fprintf(stderr, "create mctx %p func %s file %s line %u\n",
}
void
-isc__mem_create_arena(isc_mem_t **mctxp FLARG) {
+isc__mem_create_arena(const char *name, isc_mem_t **mctxp FLARG) {
unsigned int arena_no = ISC_MEM_ILLEGAL_ARENA;
RUNTIME_CHECK(mem_jemalloc_arena_create(&arena_no));
*
* https://github.com/jemalloc/jemalloc/issues/2483#issuecomment-1698173849
*/
- mem_create(mctxp, isc_mem_debugging, isc_mem_defaultflags,
+ mem_create(name, mctxp, isc_mem_debugging, isc_mem_defaultflags,
arena_no == ISC_MEM_ILLEGAL_ARENA
? 0
: MALLOCX_ARENA(arena_no) | MALLOCX_TCACHE_NONE);
isc__uv_initialize(void) {
#if UV_VERSION_HEX >= UV_VERSION(1, 38, 0)
int r;
- isc_mem_create(&isc__uv_mctx);
- isc_mem_setname(isc__uv_mctx, "uv");
+ isc_mem_create("uv", &isc__uv_mctx);
isc_mem_setdestroycheck(isc__uv_mctx, false);
r = uv_replace_allocator(isc__uv_malloc, isc__uv_realloc,
isc__xml_initialize(void) {
#ifdef HAVE_LIBXML2
#ifndef LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS
- isc_mem_create(&isc__xml_mctx);
- isc_mem_setname(isc__xml_mctx, "libxml2");
+ isc_mem_create("libxml2", &isc__xml_mctx);
isc_mem_setdestroycheck(isc__xml_mctx, false);
RUNTIME_CHECK(xmlMemSetup(isc__xml_free, isc__xml_malloc,
ns_clientmgr_t *manager = NULL;
isc_mem_t *mctx = NULL;
- isc_mem_create(&mctx);
- isc_mem_setname(mctx, "clientmgr");
+ isc_mem_create("clientmgr", &mctx);
manager = isc_mem_get(mctx, sizeof(*manager));
*manager = (ns_clientmgr_t){
isc_buffer_t buf;
isc_mem_t *mctx = NULL;
- isc_mem_create(&mctx);
+ isc_mem_create("test", &mctx);
static dns_fixedname_t fixedname[65536];
unsigned int count = 0;
isc_rwlock_init(&rwl);
- isc_mem_create(&mctx);
+ isc_mem_create("test", &mctx);
if (argc != 2) {
fprintf(stderr,
isc_mem_t *mem = NULL;
void *map = NULL;
- isc_mem_create(&mem);
+ isc_mem_create("test", &mem);
map = fun->new(mem);
size_t nitems = lines / (nthreads + 1);
exit(EXIT_SUCCESS);
}
- isc_mem_create(&mctx);
+ isc_mem_create("test", &mctx);
filename = argv[0];
result = isc_file_getsize(filename, &fileoff);
usage();
}
- isc_mem_create(&mctx);
+ isc_mem_create("test", &mctx);
dns_qp_create(mctx, &methods, NULL, &qp);
}
INSIST(nloops > 1);
- isc_mem_create(&mctx);
+ isc_mem_create("test", &mctx);
isc_mem_setdestroycheck(mctx, true);
init_logging();
init_items(mctx);
isc_stdtime_t now = isc_stdtime_now();
size_t i;
- isc_mem_create(&mctx2);
+ isc_mem_create("test", &mctx2);
result = dns_db_create(mctx2, CACHEDB_DEFAULT, dns_rootname,
dns_dbtype_cache, dns_rdataclass_in, 0, NULL,
isc_stdtime_t now = isc_stdtime_now();
size_t i;
- isc_mem_create(&mctx2);
+ isc_mem_create("test", &mctx2);
result = dns_db_create(mctx2, CACHEDB_DEFAULT, dns_rootname,
dns_dbtype_cache, dns_rdataclass_in, 0, NULL,
void *ptr;
mctx2 = NULL;
- isc_mem_create(&mctx2);
+ isc_mem_create("test", &mctx2);
before = isc_mem_inuse(mctx2);
ptr = isc_mem_allocate(mctx2, 1024000);
ISC_RUN_TEST_IMPL(isc_mem_overmem) {
isc_mem_t *omctx = NULL;
- isc_mem_create(&omctx);
+ isc_mem_create("test", &omctx);
assert_non_null(omctx);
isc_mem_setwater(omctx, 1024, 512);
assert_int_equal(result, ISC_R_SUCCESS);
isc_mem_debugging = 0;
- isc_mem_create(&mctx2);
+ isc_mem_create("test", &mctx2);
ptr = isc_mem_get(mctx2, 2048);
assert_non_null(ptr);
isc__mem_printactive(mctx2, f);
result = isc_stdio_open("mem.output", "w", &f);
assert_int_equal(result, ISC_R_SUCCESS);
- isc_mem_create(&mctx2);
+ isc_mem_create("test", &mctx2);
ptr = isc_mem_get(mctx2, 2048);
assert_non_null(ptr);
assert_non_null(f);
isc_mem_debugging = ISC_MEM_DEBUGRECORD | ISC_MEM_DEBUGTRACE;
- isc_mem_create(&mctx2);
+ isc_mem_create("test", &mctx2);
ptr = isc_mem_get(mctx2, 2048);
assert_non_null(ptr);
isc__mem_printactive(mctx2, f);
int
setup_mctx(void **state ISC_ATTR_UNUSED) {
isc_mem_debugging |= ISC_MEM_DEBUGRECORD;
- isc_mem_create(&mctx);
+ isc_mem_create("test", &mctx);
return 0;
}