1- // Copyright 2020-2023 , NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+ // Copyright 2020-2025 , NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22//
33// Redistribution and use in source and binary forms, with or without
44// modification, are permitted provided that the following conditions
@@ -876,6 +876,10 @@ main(int argc, char** argv)
876876 FAIL_IF_ERR (
877877 TRITONSERVER_InferenceResponseDelete (completed_response),
878878 " deleting inference response" );
879+
880+ // We need to make sure that the previous request was released before
881+ // reusing it.
882+ request_release_future.get ();
879883 }
880884
881885 // The TRITONSERVER_InferenceRequest object can be reused for
@@ -906,10 +910,6 @@ main(int argc, char** argv)
906910 InferResponseComplete, reinterpret_cast <void *>(p)),
907911 " setting response callback" );
908912
909- // We need to make sure that the previous request was released before
910- // reusing it.
911- request_release_future.get ();
912-
913913 // Register a new promise for the request callback barrier.
914914 barrier = std::make_unique<std::promise<void >>();
915915 request_release_future = barrier->get_future ();
@@ -936,6 +936,10 @@ main(int argc, char** argv)
936936 FAIL_IF_ERR (
937937 TRITONSERVER_InferenceResponseDelete (completed_response),
938938 " deleting inference response" );
939+
940+ // We need to make sure that the previous request was released before
941+ // reusing it.
942+ request_release_future.get ();
939943 }
940944
941945 // There are other TRITONSERVER_InferenceRequest APIs that allow
@@ -967,7 +971,7 @@ main(int argc, char** argv)
967971
968972 // Register a new promise for the request callback barrier.
969973 barrier = std::make_unique<std::promise<void >>();
970- request_release_future. get ();
974+ request_release_future = barrier-> get_future ();
971975
972976 FAIL_IF_ERR (
973977 TRITONSERVER_InferenceRequestSetReleaseCallback (
@@ -993,6 +997,10 @@ main(int argc, char** argv)
993997 FAIL_IF_ERR (
994998 TRITONSERVER_InferenceResponseDelete (completed_response),
995999 " deleting inference response" );
1000+
1001+ // Make sure the request is released before deleting it. If not, release
1002+ // callback will segfault after barrier is destructed.
1003+ request_release_future.get ();
9961004 }
9971005
9981006 FAIL_IF_ERR (
0 commit comments