triton 3.9.0
- Source
- https://github.com/triton-lang/triton
- Tag scanned
v3.9.0- Compared with
v3.8.0(19 signals introduced since)- Files
- 1344 scanned, 445 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 3 warn · 46 info
- Scan time
- 46.5 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 46 of 46 warn and critical signals; 43 demoted to info.
- Disclude version
- 4.3.0
- Scanned (UTC)
- 2026-10-28 07:13
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
inconclusive A CI step runs python3 through a ROCJITSU-variable wrapper to print the Triton active target.
Reasoning
The command name comes from a ROCJITSU variable set elsewhere in the workflow. It is plausibly a ROCm JIT tool path used to query the Triton target, but the snippet does not show where the variable is set, so the purpose is unclear.
-
inconclusive A CI step runs a mirage binary from ROCM_ROOT with a JIT config and CPU budget.
Reasoning
The command is a path under ROCM_ROOT, which is a normal ROCm install location, invoking a mirage binary with a config file and thread budget. The binary and config origin are not shown, so the snippet alone cannot settle whether it is legitimate.
-
inconclusive A second CI step runs the same ROCM_ROOT mirage binary with a JIT config.
Reasoning
This is a duplicate of the step at line 360, with the same ROCM_ROOT mirage invocation. The same uncertainty about the binary and its config applies.
-
info
warn→ info by reviewdynamic-execution.github/amd-ci/runner-diagnostics.sh:8:3new in this release||likely benign A shell helper that echoes and runs the command it is given, used for CI diagnostics.Reasoning
The "$@" is a log-and-run helper that echoes its arguments and runs them, which is the usual CI wrapper pattern. The commands come from the workflow's own scripts, so nothing here is hidden.
-
k_core="not (test_load_store_same_ptr or test_atomic_cas or (test_scan2d and shape365) or (test_scan2d and shape869) or (test_scaled_dot and 128-64-128-True-False-False-e2m1-e4m3-4-16-1))" -
info
warn→ info by reviewencoding-base64docs/meetups/for_moderators/README.md:37:139new in this releaselikely benign A base64-encoded Google Calendar ID in a meetup calendar link.Reasoning
The blob is the cid parameter of a Google Calendar URL, a base64 encoding of the calendar ID. It is a standard calendar link, not a payload.
-
info
warn→ info by reviewidentifier-confusable-collisionlib/Dialect/TritonNvidiaGPU/IR/Dialect.cpp:62:47new in this releasetriton::CacheModifier cacheModifier, CacheEvictionPriority l1, CacheEvictionPriority primary, CacheEvictionPriority secondary, FloatAttr fraction, IntegerAttr prefetchSize)dismissed Ordinary C++ parameter names that the confusable check collapses to the same skeleton.Reasoning
The collision comes from short C++ identifiers such as l1, primary and secondary that look alike under a visual skeleton. This is a common false positive of the token pass in a compiler codebase, and the snippet shows ordinary parameter names.
-
info
warn→ info by reviewdynamic-executionpython/triton/_compile_warmup_pool.py:149:20new in this release= =likely benign compile and exec of a JIT function's source to rebuild it for warmup.Reasoning
The warmup pool recompiles a JIT function's own source with its globals so kernels can be compiled in worker processes. This is the expected mechanism for a JIT compiler.
-
info
warn→ info by reviewdynamic-executionpython/triton/_compile_warmup_pool.py:151:13new in this release= =likely benign exec of a recompiled JIT function source in a namespace.Reasoning
The exec runs the compiled source of a @triton.jit function into a namespace, which is the same expected JIT rebuild step as the adjacent compile call.
-
info
warn→ info by reviewdynamic-executionpython/triton/_compile_warmup_pool.py:215:12new in this release= returnlikely benign Triton compile of an ASTSource into a kernel.Reasoning
This compile call turns an ASTSource and serialized options into a compiled kernel. It is the core compiler entry point, not a payload decoder.
-
info
warn→ info by reviewdynamic-importthird_party/amd/include/hipblas_instance.h:77:11new in this releasedylibHandle = ; } iflikely benign Reuses or loads the hipBLAS shared library via dlopen.Reasoning
RTLD_NOLOAD reuse then load of hipBLAS library; ordinary dynamic library handling for a GPU backend.
-
info
warn→ info by reviewdynamic-importthird_party/amd/include/hipblas_instance.h:81:21new in this release// If not found, try to load it dylibHandle = ; } iflikely benign Fallback dlopen of the hipBLAS library path.Reasoning
Fallback load of the same hipBLAS library; standard pattern.
-
info
warn→ info by reviewdynamic-importthird_party/proton/csrc/include/Driver/Dispatch.h:115:16new in this release// First reuse the existing handle *lib = ; iflikely benign Reuses or loads a driver library by name.Reasoning
RTLD_NOLOAD reuse followed by standard load of a named driver library; legitimate.
-
info
warn→ info by reviewdynamic-importthird_party/proton/csrc/include/Driver/Dispatch.h:118:18new in this release// If not found, try to load it from LD_LIBRARY_PATH *lib = ; } }likely benign Fallback dlopen of a driver library via library search path.Reasoning
Fallback load from LD_LIBRARY_PATH for driver library; standard behavior.
-
info
warn→ info by reviewdynamic-importthird_party/proton/csrc/lib/Profiler/RocprofSDK/RocprofSDKProfiler.cpp:61:18new in this releasestd::stringlikely benign Checks for an already-loaded library by name without loading it.Reasoning
Checks whether a library is already loaded using RTLD_NOLOAD; no fetch or execution of untrusted content.
-
info
warn→ info by reviewdynamic-attributethird_party/proton/csrc/lib/Profiler/RocprofSDK/RocprofSDKProfiler.cpp:66:22new in this releasestd::string path; iflikely benign Runtime symbol resolution via dlsym followed by dladdr to locate the providing shared library.Reasoning
dlsym with a variable symbol name is a normal way to resolve ROCm profiler SDK entry points at runtime; the code then uses dladdr to find the providing library path, which is profiler plumbing rather than malicious. Dynamic symbol lookup in a GPU profiler backend is expected.
-
info
warn→ info by reviewdynamic-importthird_party/proton/csrc/lib/Profiler/RocprofSDK/RocprofSDKProfiler.cpp:97:16new in this releasestd::string fullPath = libDir + "/" + libName; handle = ; } iflikely benign Loads the rocprofiler SDK shared library from a constructed directory path.Reasoning
dlopen of a path built from a library directory and library name is a standard pattern for loading the ROCm profiler SDK from a configured location. No encoding, network, or shell involvement is visible in the snippet.
-
info
warn→ info by reviewdynamic-importthird_party/proton/csrc/lib/Profiler/RocprofSDK/RocprofSDKProfiler.cpp:100:16new in this releaseif handle = ; if sdkHandle = handle;likely benign Fallback loading of the rocprofiler SDK library by name, storing the handle.Reasoning
Fallback dlopen by bare library name, with the handle saved when the library is librocprofiler-sdk.so. This is ordinary library discovery for a profiler integration.
-
info
warn→ info by reviewdynamic-importthird_party/proton/csrc/lib/Profiler/RocprofSDK/RocprofSDKProfiler.cpp:1095:20new in this releaseroctxLibrary = ; void *roctxLib = ; if return;likely benign Checks for an already-loaded roctx library whose path is taken from an environment variable.Reasoning
The roctx library path comes from the TRITON_ROCTX_LIBRARY environment variable and is opened with RTLD_NOLOAD, which only checks whether the library is already loaded. This is a benign configuration hook that does not load new code.
-
likely benign The Sphinx config runs a literal pip install -e of the repository root.
Reasoning
The shell=True command is a literal pip install of the local package in editable mode, run during Sphinx docs build. This is a normal docs setup step with no untrusted input.
-
3. *likely benign The same base64-encoded Google Calendar ID, repeated in a link for creating events.Reasoning
This is the same Google Calendar cid link repeated in the moderator instructions, so it is the same benign calendar identifier.
-
) = =likely benign A plugin tutorial execs a stage source string into a module dict to build compiler stages.Reasoning
This is a documentation example for a Triton backend plugin that execs generated stage source into a module namespace. The source comes from the plugin's own code, not from attacker input, though exec is a sensitive pattern that deserves a glance.
-
auto outDims = ; tt::LinearLayout ; return ; }dismissed Short C++ identifiers in a layout function that the confusable check flagged.Reasoning
The flagged identifiers are ordinary short names in a layout-encoding function, and the skeleton collision is a false positive of the token pass. Nothing in the snippet is deceptive.
-
=likely benign A test script dispatches to a named test function taken from sys.argv.Reasoning
This is a test helper that picks a function by name from its command-line argument to run it. It is a standard test dispatch pattern, and the reachable functions are the file's own tests.
-
= returnlikely benign The Triton test suite execs a kernel source generated from a template.Reasoning
The exec runs source produced by substituting values into a Triton test template. This is a routine way of generating kernels in the test suite, and the source comes from the tests themselves.
-
# reference result = # triton result =likely benign A test evaluates an expression string to compute a reference result for comparison.Reasoning
The eval evaluates a test expression string to produce a reference result for comparison with Triton output. The expressions are authored in the test file, so this is a normal numerical test pattern.
-
= =likely benign eval of a test expression to compute a NumPy reference result.Reasoning
The eval runs test-authored expression strings inside a numerical test harness that compares Triton results against NumPy. Nothing in the snippet takes input from outside the test suite.
-
= =likely benign eval of a test expression to compute a NumPy reference result.Reasoning
Same test-harness pattern: the eval evaluates a parametrized expression string to build the reference output for comparison.
-
= f assert ==likely benign eval of a triton.language dtype name in a repr test.Reasoning
The eval resolves a dtype name under triton.language to check its repr. The input is a fixed dtype string from the test itself.
-
= = + # triton result =likely benign eval of a test expression to compute the expected tensor.Reasoning
Test harness evaluates a parametrized expression to build the expected result for a Triton kernel comparison.
-
return return -
=likely benign eval of a layout string with a restricted set of Gluon layout classes.Reasoning
eval runs over a layout string with a restricted namespace of layout classes. The string likely comes from Triton's own layout serialization, though the snippet does not show its source, so a restricted-input concern cannot be fully ruled out.
-
# frontend += # compilerlikely benign Reads the module's own source to hash it for the compilation cache key.Reasoning
The code reads its own source file to hash it into the cache key, so a source change invalidates the cache. The finding's payload-extraction message does not match the snippet, which only hashes the bytes.
-
= = =likely benign Interpreter compiles a transformed kernel AST for Python execution.Reasoning
The Triton interpreter compiles a transformed AST of a user kernel so it can run in Python. This is its intended function.
-
= returnlikely benign Interpreter execs compiled kernel code in its globals.Reasoning
This exec runs the interpreter's compiled kernel code in the kernel's own globals, the same intended path as the preceding compile.
-
# Execute the function string in func_namespace to create the function # Extract the newly created function from the namespacelikely benign JIT execs generated function body text to create a kernel function.Reasoning
The JIT generates a function from a source string and execs it into a namespace to build the kernel. The generated body comes from the compiler's own code generation, not an external payload.
-
info
critical→ info by reviewdynamic-executionpython/triton_kernels/triton_kernels/specialize.py:55:5=likely benign exec of a specialized function source built from a kernel's own source.Reasoning
This builds a function from the source of an existing function plus a fixed append line, then execs it to specialize its signature. The critical severity reflects the exec of a constructed string, but the constructed content is the kernel's own source with a fixed suffix.
-
= =likely benign Uses inspect.currentframe to find the tutorial file's directory.Reasoning
The tutorial uses the current frame's file to find its own directory so it can locate an extern library. Frame introspection is ordinary in a tutorial.
-
forlikely benign Dynamic dlopen of the HIP library across configured search paths.Reasoning
Loads HIP runtime from a list of search paths, a standard GPU driver loader pattern in Triton; non-literal path is expected.
-
info
critical→ info by reviewdynamic-executionthird_party/amd/python/examples/gluon/moe_utils/specialize.py:36:5=likely benign Example code execs generated source to specialize a kernel function.Reasoning
exec on source string built from function source for specialization in an example; not a supply-chain attack pattern, though exec of constructed code is risky. The source comes from the program's own kernel code, not external input, so it appears to be a legitimate codegen technique.
-
; \ symbolName##_t funcHandle = ; \ /* Check for errors */ \likely benign Macro resolving CUDA driver functions via dlsym.Reasoning
Macro wrapping dlsym to resolve CUDA driver symbols by name, a standard loader technique.
-
// First reuse the existing handle dylibHandle = ; } iflikely benign Loads cuBLAS shared library dynamically.Reasoning
Reuses or loads the cuBLAS library by name with RTLD_NOLOAD fallback; standard runtime loader.
-
// If not found, try to load it dylibHandle = ; } iflikely benign Fallback dlopen of cuBLAS shared library.Reasoning
Fallback dlopen of cuBLAS by name; standard pattern.
-
; auto *symbol = ; iflikely benign Helper resolving a named symbol from a loaded library.Reasoning
Generic dlsym helper wrapper with error checking, typical of library loading code.
-
auto fullPath = dir + "/" + libraryName; *lib = ; } elselikely benign Loads a driver library from a configured path in the Proton dispatch layer.Reasoning
Loads profiler driver libraries from a configured directory or default name; expected for a GPU profiler dispatch layer.
-
info
warn→ info by reviewdynamic-attributethird_party/proton/csrc/include/Driver/Dispatch.h:139:39iflikely benign Resolves a driver function pointer via dlsym.Reasoning
Resolves function pointers by name from the driver library, a standard dispatch technique.
-
info
warn→ info by reviewdynamic-attributethird_party/proton/csrc/include/Driver/Dispatch.h:161:19iflikely benign Looks up a known symbol to locate the loaded library.Reasoning
Picks a known symbol to identify a loaded library path via dladdr-style info; benign library introspection.
-
TRITON_ALWAYS_COMPILE=1 TRITON_KERNEL_DUMP=1 TRITON_DUMP_DIR= # Iterate over all subdirectories in $DUMP_DIR and remove all except the .ttgir files for; -
info
warn→ info by reviewidentifier-confusable-collisionunittest/Tools/LinearLayoutTest.cpp:226:16likely benign Test labels such as in1 and in2 in a LinearLayout compose test are flagged as visually confusable.Reasoning
The collision is between identifiers like in1 and similar names in a unit test for LinearLayout composition. Visual confusability of short test labels in a test file is a common false positive from the token pass and has no malicious function.
Reproduce This Scan
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
&&