From dba423e95c9ffec2ea44e52ac8f0be65f9d1c558 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 09:58:18 -0700 Subject: [PATCH 1/7] fix: Pass utf8_range_DIR to cc-clients and python-clients builds The protobuf bundled with gRPC v1.81.1 (v33.5) installs utf8_range as a separate CMake package and protobuf-config.cmake references the utf8_range::utf8_validity imported target. find_package(Protobuf CONFIG) with only Protobuf_DIR set fails at generate time with 'the target was not found'. Provide utf8_range_DIR alongside Protobuf_DIR. --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1d09f793..37a5dfcd9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,8 +118,10 @@ endif() # platform if (WIN32) set(_FINDPACKAGE_PROTOBUF_CONFIG_DIR "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf/cmake") + set(_FINDPACKAGE_UTF8_RANGE_CONFIG_DIR "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf/cmake/utf8_range") else() set(_FINDPACKAGE_PROTOBUF_CONFIG_DIR "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf/${LIB_DIR}/cmake/protobuf") + set(_FINDPACKAGE_UTF8_RANGE_CONFIG_DIR "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf/${LIB_DIR}/cmake/utf8_range") endif() if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_CC_GRPC) @@ -142,6 +144,7 @@ if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_CC_GRPC) ${_CMAKE_ARGS_VCPKG_TARGET_TRIPLET} -DCURL_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/curl/${LIB_DIR}/cmake/CURL -DProtobuf_DIR:PATH=${_FINDPACKAGE_PROTOBUF_CONFIG_DIR} + -Dutf8_range_DIR:PATH=${_FINDPACKAGE_UTF8_RANGE_CONFIG_DIR} -DgRPC_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/grpc/lib/cmake/grpc -Dabsl_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/absl/${LIB_DIR}/cmake/absl -Dre2_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/re2/${LIB_DIR}/cmake/re2 @@ -179,6 +182,7 @@ if(TRITON_ENABLE_PYTHON_HTTP OR TRITON_ENABLE_PYTHON_GRPC) ${_CMAKE_ARGS_CMAKE_TOOLCHAIN_FILE} ${_CMAKE_ARGS_VCPKG_TARGET_TRIPLET} -DProtobuf_DIR:PATH=${_FINDPACKAGE_PROTOBUF_CONFIG_DIR} + -Dutf8_range_DIR:PATH=${_FINDPACKAGE_UTF8_RANGE_CONFIG_DIR} -DgRPC_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/grpc/lib/cmake/grpc -Dabsl_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/absl/${LIB_DIR}/cmake/absl -Dc-ares_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/c-ares/${LIB_DIR}/cmake/c-ares From d47922cd18c3123b7a176468897767640a8a6345 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:26:58 -0700 Subject: [PATCH 2/7] fix: Do not promote deprecated-declarations to errors in client library gRPC v1.81.1 headers internally reference their own deprecated IdentityKeyCertPair / set_certificate_provider symbols, and protobuf v33.5 map_field.h references a deprecated RepeatedPtrField constructor. With the third-party include dirs on the -I path these header-internal deprecation warnings become hard errors under -Werror and break the grpc-client-library build. Keep the warnings visible but non-fatal. --- src/c++/library/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/c++/library/CMakeLists.txt b/src/c++/library/CMakeLists.txt index a8d0dd9cd..34db8eb39 100644 --- a/src/c++/library/CMakeLists.txt +++ b/src/c++/library/CMakeLists.txt @@ -75,7 +75,7 @@ if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_EXAMPLES) target_compile_options( ${_json_target} PRIVATE $<$,$,$>: - -Wall -Wextra -Werror> + -Wall -Wextra -Werror -Wno-error=deprecated-declarations> $<$:/W0 /D_WIN32_WINNT=0x0A00 /EHsc> ) @@ -141,7 +141,7 @@ if(NOT WIN32) target_compile_options( ${_shm_target} PRIVATE $<$,$,$>: - -Wall -Wextra -Werror> + -Wall -Wextra -Werror -Wno-error=deprecated-declarations> $<$:/W0 /D_WIN32_WINNT=0x0A00 /EHsc> ) @@ -262,7 +262,7 @@ if(TRITON_ENABLE_CC_GRPC) target_compile_options( ${_client_target} PRIVATE $<$,$,$>: - -Wall -Wextra -Werror> + -Wall -Wextra -Werror -Wno-error=deprecated-declarations> $<$:/W0 /D_WIN32_WINNT=0x0A00 /EHsc> ) @@ -443,7 +443,7 @@ if(TRITON_ENABLE_CC_HTTP) target_compile_options( ${_client_target} PRIVATE $<$,$,$>: - -Wall -Wextra -Werror> + -Wall -Wextra -Werror -Wno-error=deprecated-declarations> $<$:/W0 /D_WIN32_WINNT=0x0A00 /EHsc> ) From 9a5593f2630b0629f4a93b0e9e882b85e3a40276 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:31:23 -0700 Subject: [PATCH 3/7] build(security): bump jackson-databind to 2.21.4 and @grpc/grpc-js to 1.14.4 Resolves open high-severity Dependabot alerts: - jackson-databind 2.21.2 -> 2.21.4: CVE-2026-54512, CVE-2026-54513 - @grpc/grpc-js 1.14.3 -> 1.14.4: CVE-2026-48068, CVE-2026-48069 --- src/grpc_generated/javascript/package-lock.json | 8 ++++---- src/grpc_generated/javascript/package.json | 2 +- src/java/pom.xml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/grpc_generated/javascript/package-lock.json b/src/grpc_generated/javascript/package-lock.json index db58e4280..b220716ec 100644 --- a/src/grpc_generated/javascript/package-lock.json +++ b/src/grpc_generated/javascript/package-lock.json @@ -8,14 +8,14 @@ "name": "simple-grpc-tritonclient", "version": "1.0.0", "dependencies": { - "@grpc/grpc-js": "^1.8.20", + "@grpc/grpc-js": "^1.14.4", "@grpc/proto-loader": "^0.8.1" } }, "node_modules/@grpc/grpc-js": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz", - "integrity": "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", + "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.8.0", diff --git a/src/grpc_generated/javascript/package.json b/src/grpc_generated/javascript/package.json index ddcd490b0..cd3edf890 100644 --- a/src/grpc_generated/javascript/package.json +++ b/src/grpc_generated/javascript/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Simple gRPC client for NVIDIA Triton in Node.js", "dependencies": { - "@grpc/grpc-js": "^1.8.20", + "@grpc/grpc-js": "^1.14.4", "@grpc/proto-loader": "^0.8.1" }, "overrides": { diff --git a/src/java/pom.xml b/src/java/pom.xml index ea4f745e1..b56267b4e 100644 --- a/src/java/pom.xml +++ b/src/java/pom.xml @@ -31,7 +31,7 @@ com.fasterxml.jackson.core jackson-databind - 2.21.2 + 2.21.4 com.google.guava From de5633a6de19ad2883e390d27989ff6a0dbc1d3c Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 13:24:34 -0700 Subject: [PATCH 4/7] fix: Treat third-party headers as SYSTEM instead of relaxing -Werror Revert the -Wno-error=deprecated-declarations relaxation and instead mark the protobuf and gRPC include directories as SYSTEM. The deprecation warnings that broke the -Werror build fire inside the gRPC v1.81.1 / protobuf v33 headers themselves (their declarations reference their own deprecated symbols); no client code uses the deprecated APIs. SYSTEM includes suppress vendor-header warnings while keeping full -Werror enforcement for our own code. --- src/c++/CMakeLists.txt | 9 +++++++-- src/c++/library/CMakeLists.txt | 8 ++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/c++/CMakeLists.txt b/src/c++/CMakeLists.txt index dcd87c10e..a36fde20f 100644 --- a/src/c++/CMakeLists.txt +++ b/src/c++/CMakeLists.txt @@ -113,7 +113,9 @@ if(TRITON_ENABLE_CC_GRPC) set(protobuf_MODULE_COMPATIBLE TRUE CACHE BOOL "protobuf_MODULE_COMPATIBLE" FORCE) find_package(Protobuf CONFIG REQUIRED) message(STATUS "Using protobuf ${Protobuf_VERSION}") - include_directories(${Protobuf_INCLUDE_DIRS}) + # SYSTEM so header-internal deprecation warnings in protobuf do not + # fail the -Werror build. + include_directories(SYSTEM ${Protobuf_INCLUDE_DIRS}) endif() # TRITON_ENABLE_CC_GRPC # @@ -122,7 +124,10 @@ endif() # TRITON_ENABLE_CC_GRPC if(TRITON_ENABLE_CC_GRPC) find_package(gRPC CONFIG REQUIRED) message(STATUS "Using gRPC ${gRPC_VERSION}") - include_directories($) + # SYSTEM so header-internal deprecation warnings in gRPC do not fail + # the -Werror build. + include_directories( + SYSTEM $) endif() # TRITON_ENABLE_CC_GRPC if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_CC_GRPC) diff --git a/src/c++/library/CMakeLists.txt b/src/c++/library/CMakeLists.txt index 34db8eb39..a8d0dd9cd 100644 --- a/src/c++/library/CMakeLists.txt +++ b/src/c++/library/CMakeLists.txt @@ -75,7 +75,7 @@ if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_EXAMPLES) target_compile_options( ${_json_target} PRIVATE $<$,$,$>: - -Wall -Wextra -Werror -Wno-error=deprecated-declarations> + -Wall -Wextra -Werror> $<$:/W0 /D_WIN32_WINNT=0x0A00 /EHsc> ) @@ -141,7 +141,7 @@ if(NOT WIN32) target_compile_options( ${_shm_target} PRIVATE $<$,$,$>: - -Wall -Wextra -Werror -Wno-error=deprecated-declarations> + -Wall -Wextra -Werror> $<$:/W0 /D_WIN32_WINNT=0x0A00 /EHsc> ) @@ -262,7 +262,7 @@ if(TRITON_ENABLE_CC_GRPC) target_compile_options( ${_client_target} PRIVATE $<$,$,$>: - -Wall -Wextra -Werror -Wno-error=deprecated-declarations> + -Wall -Wextra -Werror> $<$:/W0 /D_WIN32_WINNT=0x0A00 /EHsc> ) @@ -443,7 +443,7 @@ if(TRITON_ENABLE_CC_HTTP) target_compile_options( ${_client_target} PRIVATE $<$,$,$>: - -Wall -Wextra -Werror -Wno-error=deprecated-declarations> + -Wall -Wextra -Werror> $<$:/W0 /D_WIN32_WINNT=0x0A00 /EHsc> ) From 3b7643d006b0844ac127f3b82e8661817a9a7f64 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 20:27:10 -0700 Subject: [PATCH 5/7] fix: Export abseil log_internal symbols from libgrpcclient.so MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit protobuf v33's public message headers (exposed to consumers through the exported 'inference*' generated types) inline abseil CHECK/LOG(FATAL) calls. On aarch64 the inlined fast-path parser google::protobuf::internal::VarintParseSlowArm drags these into the consumer translation unit, so a program linking only -lgrpcclient against the shared library failed to resolve absl::*::log_internal::* (LogMessageFatal, CheckOpMessageBuilder, ...) — breaking the L0_sdk--SBSA--client shared-link test. Add the log_internal symbols to the version script's export list (glob keeps it abseil-version agnostic). x86 is unaffected: its consumer TU never references these symbols, so the extra exports sit unused. --- src/c++/library/libgrpcclient.ldscript | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/c++/library/libgrpcclient.ldscript b/src/c++/library/libgrpcclient.ldscript index 0efe94d17..47a46cd57 100644 --- a/src/c++/library/libgrpcclient.ldscript +++ b/src/c++/library/libgrpcclient.ldscript @@ -28,6 +28,14 @@ extern "C++" { triton::client*; inference*; + # protobuf v33's public message headers (exposed to consumers via the + # exported 'inference*' generated types) inline abseil CHECK/LOG(FATAL) + # calls. On aarch64 the inlined fast-path parser + # google::protobuf::internal::VarintParseSlowArm pulls these into the + # consumer translation unit, so a program linking only -lgrpcclient + # against this .so must be able to resolve the abseil log_internal + # symbols. Export them (glob keeps it version-string agnostic). + absl::*log_internal*; }; local: *; }; From 4230d828ffaa67bdc8a5f2e64fbe1b06d11da00c Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 21:22:12 -0700 Subject: [PATCH 6/7] test: Use TextFormat::PrintToString instead of DebugString for trace settings protobuf v33 makes DebugString() output intentionally unstable (injects a 'goo.gle/debugstr' marker), breaking the trace-settings string comparisons in the GRPCTraceTest cases. Serialize with TextFormat::PrintToString for stable, comparable output. --- src/c++/tests/cc_client_test.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/c++/tests/cc_client_test.cc b/src/c++/tests/cc_client_test.cc index f302ebaa6..89718cae7 100644 --- a/src/c++/tests/cc_client_test.cc +++ b/src/c++/tests/cc_client_test.cc @@ -1,4 +1,4 @@ -// Copyright 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions @@ -24,6 +24,9 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#include + +#include #include #define TRITON_INFERENCE_SERVER_CLIENT_CLASS InferenceServerHttpClient @@ -234,7 +237,11 @@ class GRPCTraceTest : public ::testing::Test { void ConvertResponse( const inference::TraceSettingResponse& response, std::string* str) { - *str = response.DebugString(); + // Use TextFormat::PrintToString rather than DebugString(): protobuf v33 + // deliberately makes DebugString() output unstable (it injects a + // "goo.gle/debugstr" marker) to discourage parsing, which breaks the + // string comparisons below. PrintToString gives stable text format. + google::protobuf::TextFormat::PrintToString(response, str); str->erase(std::remove(str->begin(), str->end(), ' '), str->end()); str->erase(std::remove(str->begin(), str->end(), '\n'), str->end()); } From e31a5fa5d3d939cd8b5af5c4f0006d8bcd245514 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Sat, 18 Jul 2026 10:37:37 -0700 Subject: [PATCH 7/7] Update headers --- CMakeLists.txt | 2 +- src/c++/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 37a5dfcd9..76c12ae2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2021-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions diff --git a/src/c++/CMakeLists.txt b/src/c++/CMakeLists.txt index a36fde20f..bd529c1b4 100644 --- a/src/c++/CMakeLists.txt +++ b/src/c++/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions