diff --git a/src/core/lib/slice/slice_intern.c b/src/core/lib/slice/slice_intern.c
index 1e0e789e6caf5c53912885bf386f14c23495da7b..c03e5e24b0fbccf4067f888b50ab791deab97498 100644
--- a/src/core/lib/slice/slice_intern.c
+++ b/src/core/lib/slice/slice_intern.c
@@ -258,6 +258,9 @@ grpc_slice grpc_slice_intern(grpc_slice slice) {
   s->length = GRPC_SLICE_LENGTH(slice);
   s->hash = hash;
   s->base.vtable = &interned_slice_vtable;
+  s->base.sub_refcount = &s->sub;
+  s->sub.vtable = &interned_slice_sub_vtable;
+  s->sub.sub_refcount = &s->sub;
   s->bucket_next = shard->strs[idx];
   shard->strs[idx] = s;
   memcpy(s + 1, GRPC_SLICE_START_PTR(slice), GRPC_SLICE_LENGTH(slice));