Implementation:Triton inference server Server TritonSignal
| Knowledge Sources | |
|---|---|
| Domains | Signal_Handling, Server_Lifecycle |
| Last Updated | 2026-02-13 17:00 GMT |
Overview
Concrete tool for registering OS signal handlers that enable graceful Triton server shutdown and crash diagnostics with stack traces.
Description
The RegisterSignalHandler() function installs platform-specific signal handlers. On Linux, it registers SIGINT/SIGTERM for graceful shutdown (setting a shared flag and notifying via condition variable) and SIGSEGV/SIGABRT handlers that print Boost stacktraces before crashing. On Windows, it uses SetConsoleCtrlHandler for Ctrl+C, close, break, logoff, and shutdown events. Shared synchronization primitives (signal_exiting_ flag, signal_exit_mu_ mutex, signal_exit_cv_ condition variable) provide safe signal-to-main thread communication.
Usage
Called once during Triton server startup in main.cc to install signal handlers before entering the main event loop.
Code Reference
Source Location
- Repository: Triton Inference Server
- File: src/triton_signal.h
- Lines: 1-44
- File: src/triton_signal.cc
- Lines: 1-145
Signature
namespace triton { namespace server {
// Shared synchronization primitives
extern volatile bool signal_exiting_;
extern std::mutex signal_exit_mu_;
extern std::condition_variable signal_exit_cv_;
// Register platform-specific signal handlers
void RegisterSignalHandler();
}} // namespace triton::server
Import
#include "triton_signal.h"
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| (none) | — | — | No parameters; installs handlers globally |
Outputs
| Name | Type | Description |
|---|---|---|
| signal_exiting_ | volatile bool | Set to true when shutdown signal received |
| signal_exit_cv_ | condition_variable | Notified on shutdown signal |
| stderr | text | Stack trace on crash signals (SIGSEGV, SIGABRT) |
Usage Examples
Server Startup Signal Registration
#include "triton_signal.h"
int main(int argc, char** argv) {
// Register signal handlers early in startup
triton::server::RegisterSignalHandler();
// ... start server ...
// Wait for shutdown signal
{
std::unique_lock<std::mutex> lock(triton::server::signal_exit_mu_);
triton::server::signal_exit_cv_.wait(
lock, [] { return triton::server::signal_exiting_; });
}
// Graceful shutdown
return 0;
}