]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Bump the maximum number of hazard pointers in tests
authorOndřej Surý <ondrej@isc.org>
Tue, 14 Jul 2020 12:24:10 +0000 (14:24 +0200)
committerOndřej Surý <ondrej@sury.org>
Thu, 18 Feb 2021 18:32:55 +0000 (19:32 +0100)
On 24-core machine, the tests would crash because we would run out of
the hazard pointers.  We now adjust the number of hazard pointers to be
in the <128,256> interval based on the number of available cores.

Note: This is just a band-aid and needs a proper fix.

bin/dig/dighost.c
bin/named/main.c
bin/named/server.c
lib/dns/resolver.c
lib/dns/view.c
lib/dns/zone.c
lib/isc/include/isc/mem.h
lib/isc/mem.c
lib/isc/tests/isctest.c
lib/isc/win32/libisc.def.in
lib/ns/client.c

index a8df930b54373470c4224c70e7f1d3d28110a88b..ff72aea4a559578c41c027ffd94abe6745a3f285 100644 (file)
@@ -1401,7 +1401,7 @@ setup_libs(void) {
        }
 
        isc_mem_create(&mctx);
-       isc_mem_setname(mctx, "dig", NULL);
+       isc_mem_setname(mctx, "dig");
 
        isc_log_create(mctx, &lctx, &logconfig);
        isc_log_setcontext(lctx);
index 9b7074caa85d5a6f28378f4f4caf1d7ce880a2c5..2201ce002d1cc78690a4c7a61705698201037832 100644 (file)
@@ -1563,7 +1563,7 @@ main(int argc, char *argv[]) {
        }
 
        isc_mem_create(&named_g_mctx);
-       isc_mem_setname(named_g_mctx, "main", NULL);
+       isc_mem_setname(named_g_mctx, "main");
 
        setup();
 
index 83ac8eed7a8f76c3d43b9f4ae10eba48785ed305..8ae900676fea5e2d17f025bed6972d1780b39f35 100644 (file)
@@ -4617,9 +4617,9 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
                         * memory.
                         */
                        isc_mem_create(&cmctx);
-                       isc_mem_setname(cmctx, "cache", NULL);
+                       isc_mem_setname(cmctx, "cache");
                        isc_mem_create(&hmctx);
-                       isc_mem_setname(hmctx, "cache_heap", NULL);
+                       isc_mem_setname(hmctx, "cache_heap");
                        CHECK(dns_cache_create(cmctx, hmctx, named_g_taskmgr,
                                               named_g_timermgr, view->rdclass,
                                               cachename, "rbt", 0, NULL,
index a91a5d52ff732cf715827bc5d7d3b4b43cf7acec..739f38fda047687fc8c1470b5d58f4af24f2f33f 100644 (file)
@@ -10409,7 +10409,7 @@ dns_resolver_create(dns_view_t *view, isc_taskmgr_t *taskmgr,
                 * enabling threads because it will be require more memory.
                 */
                isc_mem_create(&res->buckets[i].mctx);
-               isc_mem_setname(res->buckets[i].mctx, name, NULL);
+               isc_mem_setname(res->buckets[i].mctx, name);
                isc_task_setname(res->buckets[i].task, name, res);
                ISC_LIST_INIT(res->buckets[i].fctxs);
                atomic_init(&res->buckets[i].exiting, false);
index 87aaec269a9de499c2157331cde6e6f0bed2f157..ae662f850e6c639b53f65803009ca32a791ad339 100644 (file)
@@ -828,7 +828,7 @@ dns_view_createresolver(dns_view_t *view, isc_taskmgr_t *taskmgr,
        isc_mem_create(&mctx);
 
        result = dns_adb_create(mctx, view, timermgr, taskmgr, &view->adb);
-       isc_mem_setname(mctx, "ADB", NULL);
+       isc_mem_setname(mctx, "ADB");
        isc_mem_detach(&mctx);
        if (result != ISC_R_SUCCESS) {
                dns_resolver_shutdown(view->resolver);
index 0269a9b42d5e4c0dcca34f5000683d932e0a428d..2fe91debe44200e9665f06f21daf331a7878fc16 100644 (file)
@@ -18358,7 +18358,7 @@ mctxinit(void **target, void *arg) {
        REQUIRE(target != NULL && *target == NULL);
 
        isc_mem_create(&mctx);
-       isc_mem_setname(mctx, "zonemgr-pool", NULL);
+       isc_mem_setname(mctx, "zonemgr-pool");
 
        *target = mctx;
        return (ISC_R_SUCCESS);
index 3e789ef34d6a40c09c542f609874e435e552cda6..01dac4c2e0450dda15868a4b12aa7750ec6abe76 100644 (file)
@@ -316,7 +316,7 @@ isc_mem_references(isc_mem_t *ctx);
  */
 
 void
-isc_mem_setname(isc_mem_t *ctx, const char *name, void *tag);
+isc_mem_setname(isc_mem_t *ctx, const char *name);
 /*%<
  * Name 'ctx'.
  *
@@ -324,8 +324,6 @@ isc_mem_setname(isc_mem_t *ctx, const char *name, void *tag);
  *
  *\li  Only the first 15 characters of 'name' will be copied.
  *
- *\li  'tag' is for debugging purposes only.
- *
  * Requires:
  *
  *\li  'ctx' is a valid ctx.
@@ -345,21 +343,6 @@ isc_mem_getname(isc_mem_t *ctx);
  *     empty.
  */
 
-void *
-isc_mem_gettag(isc_mem_t *ctx);
-/*%<
- * Get the tag value for  'task', as previously set using isc_mem_setname().
- *
- * Requires:
- *\li  'ctx' is a valid ctx.
- *
- * Notes:
- *\li  This function is for debugging purposes only.
- *
- * Requires:
- *\li  'ctx' is a valid task.
- */
-
 #ifdef HAVE_LIBXML2
 int
 isc_mem_renderxml(void *writer0);
index e4c5a8ab04a9bda14197d1c81c8f408eee1ca36a..7a0c650247fef9650bd790576aedfa5cfa35dce5 100644 (file)
@@ -128,7 +128,6 @@ struct isc_mem {
        struct stats *stats;
        isc_refcount_t references;
        char name[16];
-       void *tag;
        size_t total;
        size_t inuse;
        size_t maxinuse;
@@ -463,7 +462,6 @@ mem_create(isc_mem_t **ctxp, unsigned int flags) {
        ctx->flags = flags;
        isc_refcount_init(&ctx->references, 1);
        memset(ctx->name, 0, sizeof(ctx->name));
-       ctx->tag = NULL;
        ctx->total = 0;
        ctx->inuse = 0;
        ctx->maxinuse = 0;
@@ -1186,12 +1184,11 @@ isc_mem_isovermem(isc_mem_t *ctx) {
 }
 
 void
-isc_mem_setname(isc_mem_t *ctx, const char *name, void *tag) {
+isc_mem_setname(isc_mem_t *ctx, const char *name) {
        REQUIRE(VALID_CONTEXT(ctx));
 
        LOCK(&ctx->lock);
        strlcpy(ctx->name, name, sizeof(ctx->name));
-       ctx->tag = tag;
        UNLOCK(&ctx->lock);
 }
 
@@ -1206,13 +1203,6 @@ isc_mem_getname(isc_mem_t *ctx) {
        return (ctx->name);
 }
 
-void *
-isc_mem_gettag(isc_mem_t *ctx) {
-       REQUIRE(VALID_CONTEXT(ctx));
-
-       return (ctx->tag);
-}
-
 /*
  * Memory pool stuff
  */
index 66c70e500417ea106928f5433ee70df1d3d8264b..bf33660f98f8c8ed75c3bbb07d95771135e33bae 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <isc/buffer.h>
 #include <isc/hash.h>
+#include <isc/hp.h>
 #include <isc/mem.h>
 #include <isc/os.h>
 #include <isc/socket.h>
@@ -85,6 +86,8 @@ create_managers(unsigned int workers) {
                workers = atoi(p);
        }
 
+       isc_hp_init(ISC_MAX(ISC_MIN(workers, 256), 128));
+
        netmgr = isc_nm_start(test_mctx, workers);
        CHECK(isc_taskmgr_create(test_mctx, workers, 0, netmgr, &taskmgr));
        CHECK(isc_task_create(taskmgr, 0, &maintask));
index e460d5757e41b946e55d4b76d7b538090da5f79a..7bc4926a969d5cd1dcccea5d38ef7bf6ca034727 100644 (file)
@@ -368,7 +368,6 @@ isc_mem_create
 isc_mem_destroy
 isc_mem_detach
 isc_mem_getname
-isc_mem_gettag
 isc_mem_inuse
 isc_mem_isovermem
 isc_mem_maxinuse
index edd59197f288ae1074f2634f0beeb59fb60655a9..f878247f557317e7035347e30506ada65be5cd3b 100644 (file)
@@ -2506,7 +2506,7 @@ ns_clientmgr_create(isc_mem_t *mctx, ns_server_t *sctx, isc_taskmgr_t *taskmgr,
        for (i = 0; i < npools; i++) {
                manager->mctxpool[i] = NULL;
                isc_mem_create(&manager->mctxpool[i]);
-               isc_mem_setname(manager->mctxpool[i], "client", NULL);
+               isc_mem_setname(manager->mctxpool[i], "client");
        }
 
        manager->magic = MANAGER_MAGIC;