]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Give every memory context a name
authorOndřej Surý <ondrej@isc.org>
Fri, 21 Feb 2025 11:45:08 +0000 (12:45 +0100)
committerOndřej Surý <ondrej@isc.org>
Thu, 29 May 2025 03:46:46 +0000 (05:46 +0200)
Instead of giving the memory context names with an explicit call to
isc_mem_setname(), add the name to isc_mem_create() call to have all the
memory contexts an unconditional name.

55 files changed:
bin/check/check-tool.c
bin/check/named-checkconf.c
bin/check/named-checkzone.c
bin/confgen/rndc-confgen.c
bin/confgen/tsig-keygen.c
bin/dig/dighost.c
bin/dnssec/dnssec-cds.c
bin/dnssec/dnssec-dsfromkey.c
bin/dnssec/dnssec-importkey.c
bin/dnssec/dnssec-keyfromlabel.c
bin/dnssec/dnssec-keygen.c
bin/dnssec/dnssec-ksr.c
bin/dnssec/dnssec-revoke.c
bin/dnssec/dnssec-settime.c
bin/dnssec/dnssec-verify.c
bin/named/dlz_dlopen_driver.c
bin/named/main.c
bin/tests/system/makejournal.c
bin/tests/system/rsabigexponent/bigkey.c
bin/tests/wire_test.c
bin/tools/dnstap-read.c
bin/tools/named-journalprint.c
bin/tools/named-rrchecker.c
doc/dev/dev.md
doc/misc/cfg_test.c
fuzz/dns_master_load.c
fuzz/dns_message_checksig.c
fuzz/dns_message_parse.c
fuzz/dns_qp.c
fuzz/dns_rdata_fromtext.c
fuzz/dns_rdata_fromwire_text.c
fuzz/isc_lex_getmastertoken.c
fuzz/isc_lex_gettoken.c
lib/dns/adb.c
lib/dns/cache.c
lib/dns/dst_api.c
lib/dns/view.c
lib/dns/zone.c
lib/isc/crypto.c
lib/isc/include/isc/mem.h
lib/isc/log.c
lib/isc/loop.c
lib/isc/managers.c
lib/isc/mem.c
lib/isc/uv.c
lib/isc/xml.c
lib/ns/client.c
tests/bench/compress.c
tests/bench/load-names.c
tests/bench/qp-dump.c
tests/bench/qplookups.c
tests/bench/qpmulti.c
tests/dns/qpdb_test.c
tests/isc/mem_test.c
tests/libtest/isc.c

index 1cca74d861ed6915da302c5821c92e8dd6672fea..13c5ec7593d1e99432b6667b87b6dc074a655db0 100644 (file)
@@ -108,7 +108,7 @@ add(char *key, int value) {
        isc_symvalue_t symvalue;
 
        if (sym_mctx == NULL) {
-               isc_mem_create(&sym_mctx);
+               isc_mem_create("check-tool", &sym_mctx);
        }
 
        if (symtab == NULL) {
index 5f5f635ecdfc1e97ed5f545e78d7cd6b6be14637..98a73cf338c45be3b201ca6557bddcb27d4f7e69 100644 (file)
@@ -619,7 +619,7 @@ main(int argc, char **argv) {
        }
        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) {
index fb49f842d6dea3f1cd0742050f4fa5f5be17f9b4..b91192bed30774712ee606af5cd70dd4bb539f01 100644 (file)
@@ -535,7 +535,7 @@ main(int argc, char **argv) {
                usage();
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
        if (!quiet) {
                RUNTIME_CHECK(setup_logging(errout) == ISC_R_SUCCESS);
        }
index 6f6fce391393b67bb279b8d9904bac514783b360..5965c30b82c77f030fad1e2782edb323269125a3 100644 (file)
@@ -108,6 +108,7 @@ main(int argc, char **argv) {
        bool keyonly = false;
        bool quiet = false;
        int len;
+       const char *name = argv[0];
 
        keydef = keyfile = RNDC_KEYFILE;
 
@@ -226,7 +227,7 @@ main(int argc, char **argv) {
        }
        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);
index ff0195b97b86974722760012099ec58c3f9e86e3..344608dd34107038f51518c4d255d84d1c953e7e 100644 (file)
@@ -212,7 +212,7 @@ main(int argc, char **argv) {
        /* 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;
index 0cafbcdf688036bf679724db6f6c673c1fa3a88f..b0651e3941aaf8764abeabde74261022419b4eb8 100644 (file)
@@ -1352,7 +1352,6 @@ setup_libs(void) {
                                    ISC_LOGMODULE_DEFAULT);
        isc_log_setdebuglevel(0);
 
-       isc_mem_setname(mctx, "dig");
        mainloop = isc_loop_main(loopmgr);
 }
 
index ecab56dd670ed8e97150e89ec13f815b1ae1ebf5..457d5c5ac56ed39c20a89d973dfad637928ab746 100644 (file)
@@ -1080,7 +1080,7 @@ main(int argc, char *argv[]) {
 
        setfatalcallback(cleanup);
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        isc_commandline_errprint = false;
 
index 81050bd1fdfbbc750a8ab60f04c01cf7e2116084..4421a4574f42961d997eb03ae4662499ced794f1 100644 (file)
@@ -376,7 +376,7 @@ main(int argc, char **argv) {
                usage();
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        isc_commandline_errprint = false;
 
index fa6cb4fe92e2cbb75be85ca59775518e37f7f817..8f81481cef06b9e6d11ad08ef2efd72cbcb72ef5 100644 (file)
@@ -308,7 +308,7 @@ main(int argc, char **argv) {
                usage();
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        isc_commandline_errprint = false;
 
index e358eb98ff94a6d8fd1b818811ad3efd95ff9788..62fa2400300ae84f5883a14465ecc681a84eb42b 100644 (file)
@@ -149,7 +149,7 @@ main(int argc, char **argv) {
                usage();
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        isc_commandline_errprint = false;
 
index b63ccb77403e35b8aaf6684f86a5d06a61c91e67..b0679b03e4f96f54b45f4c47fa30f00b866e32d5 100644 (file)
@@ -812,7 +812,7 @@ main(int argc, char **argv) {
        }
        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) {
index e35c5f6ca6b176940a8d4e891d91285aaeb2b498..826e635bb53274cee5f0a6db13672c6b4c0d32c5 100644 (file)
@@ -1326,7 +1326,7 @@ main(int argc, char *argv[]) {
                .now = isc_stdtime_now(),
        };
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        isc_commandline_errprint = false;
 
index 9dbbb3cf84d7c0e08f95cea9bfa2ffccf211fd8e..b2d72011809077cb0f87af28e4128330ca9f7bb3 100644 (file)
@@ -82,7 +82,7 @@ main(int argc, char **argv) {
                usage();
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        isc_commandline_errprint = false;
 
index cb99e54066f57bb61401c30dfd265d3bd404bca1..72d4662f4f3ec6d2e5a1838a9bcbca95145d0e8b 100644 (file)
@@ -244,7 +244,7 @@ main(int argc, char **argv) {
                usage();
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        setup_logging();
 
index cd2943122356f6178e60d5fcc36e6414360d3f3e..536dedb48acda6dbaf25d87f145241673e0d13e8 100644 (file)
@@ -202,7 +202,7 @@ main(int argc, char *argv[]) {
        }
        isc_commandline_reset = true;
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        isc_commandline_errprint = false;
 
index 5c0dd1f9626137fcbc1e43bfc6eb927fa1d77026..95f4ddd366fffa97b9acfe4d4f09827e0f168b2a 100644 (file)
@@ -222,7 +222,7 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
                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,
index 5cc6fb625da7cc3d4e03df7f686184d1ac2b756e..8ee2edf576f992552a8325ae76ae10b0752a3a21 100644 (file)
@@ -608,7 +608,7 @@ printversion(bool verbose) {
 #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));
@@ -1453,7 +1453,6 @@ main(int argc, char *argv[]) {
        }
 
        setup();
-       isc_mem_setname(named_g_mctx, "main");
        INSIST(named_g_server != NULL);
 
        /*
index eb85ad25a5ad59938ea2ffe27f59a6d0da1b904c..47e69c28922fde56e32564f37d8ca75bf7c05b3d 100644 (file)
@@ -76,7 +76,7 @@ main(int argc, char **argv) {
        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(
index 57072297d048bcc254fa62aab58281c88129c058..1a43916615361b4a673eece7353b55272c8fd80e 100644 (file)
@@ -105,7 +105,7 @@ main(int argc, char **argv) {
                exit(EXIT_FAILURE);
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
 
        dns_log_init();
 
index ec0ecccf5e044a9aa4f063a8c5672f3bb7bbb73f..dda2cc82c9e46d98399c604bc86a260e2da5381b 100644 (file)
@@ -139,7 +139,7 @@ main(int argc, char *argv[]) {
        }
        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) {
index c9e5406fc389af9efc6b416dccbe34ddbfc82d2c..8e21e5bf06fac78e936f38543a6e9ddb59893655 100644 (file)
@@ -375,7 +375,7 @@ main(int argc, char *argv[]) {
                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");
index c8fcc2b75e6a7131e64871091b8f969c9b65d945..78dda92683d3625300756adf2d3e1a79028fe3df 100644 (file)
@@ -93,7 +93,7 @@ main(int argc, char **argv) {
        }
        file = argv[0];
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
        setup_logging(stderr);
 
        if (upgrade) {
index 9772bb1a8d30036ab1bc53444cf4aea876992a7f..71023bb92650159cbc2a203f58a1d01333778597 100644 (file)
@@ -170,7 +170,7 @@ main(int argc, char *argv[]) {
                exit(EXIT_SUCCESS);
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create(argv[0], &mctx);
        isc_lex_create(mctx, 256, &lex);
 
        /*
index 9c85d3280f13ead87bc033ba89580dd79a3414bc..82990665f4f0e1e4d19be63658476ee23e646ee3 100644 (file)
@@ -449,7 +449,7 @@ memory has not been freed when BIND shuts down.
 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
index 9a26acc194498b55db135d9618aa41085e73bd43..d039bf07cf631cd1c7f14630a03c62f817ca795f 100644 (file)
@@ -61,7 +61,7 @@ main(int argc, char **argv) {
        unsigned int zonetype = 0;
        unsigned int pflags = 0;
 
-       isc_mem_create(&mctx);
+       isc_mem_create("misc", &mctx);
 
        setup_logging();
 
index 09717329fa5494a5bd7ebcb29a435dc1516e0ca3..1683d088dd0b88adebabc0e5f018fffc03f1285b 100644 (file)
@@ -48,7 +48,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
        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);
index e1ec6096712e6d46f05adf6ca675e172390e93be..e1c2eeefb3b3b7dab673b5d96afc659c5bbfe81d 100644 (file)
@@ -169,7 +169,7 @@ LLVMFuzzerInitialize(int *argc ISC_ATTR_UNUSED, char ***argv ISC_ATTR_UNUSED) {
        fputs(c3, fd);
        fclose(fd);
 
-       isc_mem_create(&mctx);
+       isc_mem_create("fuzz", &mctx);
 
        isc_loopmgr_create(mctx, 1, &loopmgr);
 
index 05160b72e2877cf90da66e49ac1d5fb751b4772a..5f6069266e30537de8fec7e1aa9efeeef6755b5a 100644 (file)
@@ -36,7 +36,7 @@ static uint8_t render_buf[64 * 1024 - 1];
 
 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;
index 8b9fc08a6e8b92d3297d8e9e0d364861dc2e94d4..08a6c4d6622103354f1027eaf7a582a58e13b2fd 100644 (file)
@@ -122,7 +122,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
        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;
index 24d3788dfe87c05ad435644f9d172c37c3500e2f..8f2988e2c163b7caf3cb647c018141bf38e7173f 100644 (file)
@@ -46,7 +46,7 @@ isc_lexspecials_t specials = { ['('] = 1, [')'] = 1, ['"'] = 1 };
 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;
index 24db37965174a747a75dad802d423bf658eb4709..cea16f559547541ca0b471515e744d7cd6e2abfd 100644 (file)
@@ -45,7 +45,7 @@ int
 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));
index 3de61307af8c1cc40ea1f1fe778fc23968334187..2a6570505416a201b61a6ac72dc5b046764970ad 100644 (file)
@@ -35,7 +35,7 @@ static isc_lex_t *lex = NULL;
 
 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;
index a41893e3e9474ea405e2fa94c4ff8406eb9867d5..3acbe2ddbaa6a311f554ecdf4f34f573ceec5b6e 100644 (file)
@@ -28,7 +28,7 @@ static isc_lex_t *lex = NULL;
 
 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;
index ef37c987db8436ee5d8acffea55816198e714ac7..435150e3800b4e14d7572438594c9137aa2a33c0 100644 (file)
@@ -1732,8 +1732,7 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, dns_adb_t **newadb) {
        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);
index d43865e98f94b8b5912e177251ee4713e3fbb8e6..7084a3943b9337b0c09efbac9f6e544179933189 100644 (file)
@@ -100,8 +100,7 @@ cache_create_db(dns_cache_t *cache, dns_db_t **dbp, isc_mem_t **tmctxp,
         * 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
@@ -109,8 +108,7 @@ cache_create_db(dns_cache_t *cache, dns_db_t **dbp, isc_mem_t **tmctxp,
         * 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
index 9962db728bbfd7973e4a18dc20df1ebb62e12856..2851e3d0a7ea45e54715b55c65aaa50342d8ec51 100644 (file)
@@ -190,8 +190,7 @@ static isc_mem_t *dst__mctx = NULL;
 
 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]);
index 0cdf603db36d827290ec60e67503074d95929b4d..e7d16b9f4a307c483e456b3ce8a5c020ed482114 100644 (file)
@@ -536,8 +536,7 @@ dns_view_createresolver(dns_view_t *view, isc_nm_t *netmgr,
                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);
 
index cecad687253716231dd16b722187ca4371953f8f..7e61d6869ceff2c9b799bf9383e432932a070314 100644 (file)
@@ -19052,8 +19052,7 @@ dns_zonemgr_create(isc_mem_t *mctx, isc_nm_t *netmgr, dns_zonemgr_t **zmgrp) {
        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. */
index 604a6439b73fc601fdc00fae6add513805379c05..186149d60eb32e52ae80aaf3ec2777dfc39bae83 100644 (file)
@@ -252,8 +252,7 @@ void
 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
index 09382cfc02198396bbab92d5ed57e7e1867cfb9b..1ce0dc936f482bf0b92c0b202e21b94efcaadcfb 100644 (file)
@@ -200,17 +200,17 @@ mallocx(size_t size, int flags);
 
 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.
@@ -219,9 +219,10 @@ isc__mem_create(isc_mem_t **_ISC_MEM_FLARG);
  * 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
@@ -325,20 +326,6 @@ isc_mem_references(isc_mem_t *ctx);
  * 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);
 /*%<
index 6ffd454750c409a007ad7e4e2dca1d21cdbd0882..5aa98f684c40b2e354a86f74a833db3db782f572 100644 (file)
@@ -1551,7 +1551,7 @@ isc__log_initialize(void) {
 
        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){
index 1c7cacb202b2dec4b1aef1a17aba85182010fd48..8f5da3c8599b524215b3803a0ed38069434b6221 100644 (file)
@@ -226,10 +226,7 @@ loop_init(isc_loop_t *loop, isc_loopmgr_t *loopmgr, uint32_t tid,
        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);
 
index 1695d5f6f98b7208c865f5b4426cd88ddf798657..0dc856b7cf28a9506455aa787878924f9ef4388a 100644 (file)
@@ -20,9 +20,8 @@ void
 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);
index 25ab05b955345b5297737612474dfa929473401e..d6939a1bf981ecdf76fb33aedf803d59134111e8 100644 (file)
@@ -123,7 +123,7 @@ struct isc_mem {
        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;
@@ -450,11 +450,12 @@ isc__mem_shutdown(void) {
 }
 
 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);
@@ -466,6 +467,7 @@ mem_create(isc_mem_t **ctxp, unsigned int debugging, unsigned int flags,
                .jemalloc_flags = jemalloc_flags,
                .jemalloc_arena = ISC_MEM_ILLEGAL_ARENA,
                .checkfree = true,
+               .name = strdup(name),
        };
 
        isc_mutex_init(&ctx->lock);
@@ -542,6 +544,8 @@ mem_destroy(isc_mem_t *ctx) {
        }
 #endif /* if ISC_MEM_TRACKLINES */
 
+       free(ctx->name);
+
        isc_mutex_destroy(&ctx->lock);
 
        if (ctx->checkfree) {
@@ -900,15 +904,6 @@ isc_mem_isovermem(isc_mem_t *ctx) {
        }
 }
 
-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));
@@ -1415,8 +1410,8 @@ error:
 #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",
@@ -1426,7 +1421,7 @@ isc__mem_create(isc_mem_t **mctxp FLARG) {
 }
 
 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));
@@ -1438,7 +1433,7 @@ isc__mem_create_arena(isc_mem_t **mctxp FLARG) {
         *
         * 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);
index 431cecbf483bb73f7e4aa4c3cf529e3f62a54559..59330e2d407feeb1af326cacc7714df7df86e122 100644 (file)
@@ -132,8 +132,7 @@ void
 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,
index 495c2946896494fe91891febc27f7bb1c485f362..664a6e8fe8120e7e07a3fd71cd850b6f7f79f8a0 100644 (file)
@@ -52,8 +52,7 @@ void
 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,
index da97367883c2926c16541d3654a46518ebffdfe3..cdc5a49e094783bc6fc914a206b7c59933969fe5 100644 (file)
@@ -2645,8 +2645,7 @@ ns_clientmgr_create(ns_server_t *sctx, isc_loopmgr_t *loopmgr,
        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){
index f6c51afea182ac2f3dde379d587e3c02276cc44a..59b8759c4d575a869de8f87d266751f1b29ec9f4 100644 (file)
@@ -43,7 +43,7 @@ main(void) {
        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;
index 9957bbc543c186895dcb5bcdaa09a1eb98792a30..67aa7ad5a0a2c6f496bf31eb780cf5e4d9b64b0d 100644 (file)
@@ -420,7 +420,7 @@ main(int argc, char *argv[]) {
 
        isc_rwlock_init(&rwl);
 
-       isc_mem_create(&mctx);
+       isc_mem_create("test", &mctx);
 
        if (argc != 2) {
                fprintf(stderr,
@@ -494,7 +494,7 @@ main(int argc, char *argv[]) {
                        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);
index 476cab2bfc880268b59392b578b0dacad2c02102..33bccc5ec89e07be34bf0f9eb5fbe6a059940ce6 100644 (file)
@@ -161,7 +161,7 @@ main(int argc, char *argv[]) {
                exit(EXIT_SUCCESS);
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create("test", &mctx);
 
        filename = argv[0];
        result = isc_file_getsize(filename, &fileoff);
index ed31ecf318b79370677c0cd2da66e7f6030baf04..aeb3e8b54ce7e0d22140792833a995e1d1fb504b 100644 (file)
@@ -197,7 +197,7 @@ main(int argc, char **argv) {
                usage();
        }
 
-       isc_mem_create(&mctx);
+       isc_mem_create("test", &mctx);
 
        dns_qp_create(mctx, &methods, NULL, &qp);
 
index d2d5d5f8b7ed21d3d85d0548674207a3e1543980..07c151e6c6fb0725a3cc0146d1735263fe16b82c 100644 (file)
@@ -876,7 +876,7 @@ main(void) {
        }
        INSIST(nloops > 1);
 
-       isc_mem_create(&mctx);
+       isc_mem_create("test", &mctx);
        isc_mem_setdestroycheck(mctx, true);
        init_logging();
        init_items(mctx);
index 4b1de18f7dd08d00831a87a8ca91efb2195281fd..1fcb968dc7167aa1f4e0398435869f135ba84740 100644 (file)
@@ -132,7 +132,7 @@ ISC_LOOP_TEST_IMPL(overmempurge_bigrdata) {
        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,
@@ -183,7 +183,7 @@ ISC_LOOP_TEST_IMPL(overmempurge_longname) {
        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,
index 823e46ca94028251f1fc7db95f62472c64b3dc6f..0651be7a42f4aefc422a2127e1ee2d8f75d862f5 100644 (file)
@@ -183,7 +183,7 @@ ISC_RUN_TEST_IMPL(isc_mem_inuse) {
        void *ptr;
 
        mctx2 = NULL;
-       isc_mem_create(&mctx2);
+       isc_mem_create("test", &mctx2);
 
        before = isc_mem_inuse(mctx2);
        ptr = isc_mem_allocate(mctx2, 1024000);
@@ -291,7 +291,7 @@ ISC_RUN_TEST_IMPL(isc_mem_reallocate) {
 
 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);
@@ -337,7 +337,7 @@ ISC_RUN_TEST_IMPL(isc_mem_noflags) {
        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);
@@ -373,7 +373,7 @@ ISC_RUN_TEST_IMPL(isc_mem_recordflag) {
        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);
@@ -437,7 +437,7 @@ ISC_RUN_TEST_IMPL(isc_mem_traceflag) {
        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);
index 92a3d8afac482b31ebfdcd3cd67bb3a3327bc62e..4c2fcc6f2c2b4962d87201f386f43fc036078411 100644 (file)
@@ -72,7 +72,7 @@ setup_workers(void **state ISC_ATTR_UNUSED) {
 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;
 }