diff --git a/src/cpp/util/byte_buffer.cc b/src/cpp/util/byte_buffer.cc
index f8d8eec06559bc3340148f5e298f0769249b52b6..ac2657472cf32622fbe9a380fba6cc30d858efaf 100644
--- a/src/cpp/util/byte_buffer.cc
+++ b/src/cpp/util/byte_buffer.cc
@@ -60,7 +60,6 @@ void ByteBuffer::Dump(std::vector<Slice>* slices) {
   gpr_slice s;
   while (grpc_byte_buffer_reader_next(reader, &s)) {
     slices->push_back(Slice(s, Slice::STEAL_REF));
-    gpr_slice_unref(s);
   }
   grpc_byte_buffer_reader_destroy(reader);
 }
diff --git a/test/cpp/end2end/generic_end2end_test.cc b/test/cpp/end2end/generic_end2end_test.cc
index eb6f5369a922c20055778e1f64f275c3fb368d54..584d4bc7ba0dcb35ea79da3e823817dd18bb53cf 100644
--- a/test/cpp/end2end/generic_end2end_test.cc
+++ b/test/cpp/end2end/generic_end2end_test.cc
@@ -149,7 +149,8 @@ class GenericEnd2endTest : public ::testing::Test {
       GenericServerContext srv_ctx;
       GenericServerAsyncReaderWriter stream(&srv_ctx);
 
-      send_request.set_message("Hello");
+      // The string needs to be long enough to test heap-based slice.
+      send_request.set_message("Hello world. Hello world. Hello world.");
       std::unique_ptr<GenericClientAsyncReaderWriter> call =
           generic_stub_->Call(&cli_ctx, kMethodName, &cli_cq_, tag(1));
       client_ok(1);