diff --git a/src/core/ext/client_config/client_config_plugin.c b/src/core/ext/client_config/client_config_plugin.c
index aac57b5e6ac099215ed15ff01093d0de5479c18d..6cd8a2ffd248963ded130c323960f7aa4b28f6dc 100644
--- a/src/core/ext/client_config/client_config_plugin.c
+++ b/src/core/ext/client_config/client_config_plugin.c
@@ -35,6 +35,8 @@
 #include <stdbool.h>
 #include <string.h>
 
+#include <grpc/support/alloc.h>
+
 #include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/client_config/lb_policy_registry.h"
 #include "src/core/ext/client_config/resolver_registry.h"
@@ -64,8 +66,10 @@ static bool set_default_host_if_unset(grpc_channel_stack_builder *builder,
   arg.key = GRPC_ARG_DEFAULT_AUTHORITY;
   arg.value.string = grpc_get_default_authority(
       grpc_channel_stack_builder_get_target(builder));
-  grpc_channel_stack_builder_set_channel_arguments(
-      builder, grpc_channel_args_copy_and_add(args, &arg, 1));
+  grpc_channel_args *new_args = grpc_channel_args_copy_and_add(args, &arg, 1);
+  grpc_channel_stack_builder_set_channel_arguments(builder, new_args);
+  gpr_free(arg.value.string);
+  grpc_channel_args_destroy(new_args);
   return true;
 }
 
diff --git a/src/core/lib/channel/channel_stack_builder.c b/src/core/lib/channel/channel_stack_builder.c
index 831736ad7a305c45857ad1f554fccb1324d58f65..a8646c956577347772f0871ddc1841824fa57391 100644
--- a/src/core/lib/channel/channel_stack_builder.c
+++ b/src/core/lib/channel/channel_stack_builder.c
@@ -142,7 +142,7 @@ void grpc_channel_stack_builder_set_channel_arguments(
   if (builder->args != NULL) {
     grpc_channel_args_destroy(builder->args);
   }
-  builder->args = grpc_channel_args_copy(builder->args);
+  builder->args = grpc_channel_args_copy(args);
 }
 
 void grpc_channel_stack_builder_set_transport(
diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.c
index 06c5dd4a3180f9a0f0fe41ec269dfc93d5bea9c2..1190adaaa6dde2e40f2fe73454e4b10e7e5ef98c 100644
--- a/src/core/lib/surface/init.c
+++ b/src/core/lib/surface/init.c
@@ -126,7 +126,7 @@ static void register_builtin_channel_init() {
                                    GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
                                    append_filter, (void *)&grpc_lame_filter);
   grpc_channel_init_register_stage(
-      GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY, prepend_filter,
+      GRPC_SERVER_CHANNEL, INT_MAX, prepend_filter,
       (void *)&grpc_server_top_filter);
 }