diff --git a/test/cpp/qps/client_sync.cc b/test/cpp/qps/client_sync.cc
index 5dd64d0b13452a250df554ea3b3040007df128f7..0809eb5b6c7966448ac46c83b0e9c97ac498a7f3 100644
--- a/test/cpp/qps/client_sync.cc
+++ b/test/cpp/qps/client_sync.cc
@@ -70,7 +70,7 @@ class SynchronousClient : public Client {
     responses_.resize(num_threads_);
   }
 
-  virtual ~SynchronousClient() { EndThreads(); }
+  virtual ~SynchronousClient() {};
 
  protected:
   size_t num_threads_;
@@ -81,7 +81,7 @@ class SynchronousUnaryClient GRPC_FINAL : public SynchronousClient {
  public:
   SynchronousUnaryClient(const ClientConfig& config):
     SynchronousClient(config) {StartThreads(num_threads_);}
-  ~SynchronousUnaryClient() {}
+  ~SynchronousUnaryClient() {EndThreads();}
   
   bool ThreadFunc(Histogram* histogram, size_t thread_idx) GRPC_OVERRIDE {
     auto* stub = channels_[thread_idx % channels_.size()].get_stub();