diff --git a/test/cpp/end2end/generic_end2end_test.cc b/test/cpp/end2end/generic_end2end_test.cc
index f9f68bbe0230830c80db46642330dd44e5c092ce..5b65b407d31d65fb3e3e1aea5b5e53010afdea24 100644
--- a/test/cpp/end2end/generic_end2end_test.cc
+++ b/test/cpp/end2end/generic_end2end_test.cc
@@ -130,8 +130,16 @@ class GenericEnd2endTest : public ::testing::Test {
         cli_ctx.set_deadline(deadline);
       }
 
+      // Rather than using the original kMethodName, make a short-lived
+      // copy to also confirm that we don't refer to this object beyond
+      // the initial call preparation
+      const grpc::string* method_name = new grpc::string(kMethodName);
+
       std::unique_ptr<GenericClientAsyncReaderWriter> call =
-          generic_stub_->PrepareCall(&cli_ctx, kMethodName, &cli_cq_);
+          generic_stub_->PrepareCall(&cli_ctx, *method_name, &cli_cq_);
+
+      delete method_name;  // Make sure that this is not needed after invocation
+
       call->StartCall(tag(1));
       client_ok(1);
       std::unique_ptr<ByteBuffer> send_buffer =