Game server signals
A signal is a way to report an occurrence of an exceptional event to the host operating system. The signal type tells the host operating system how to handle the event. This section provides guidance around using common signals and how Multiplay Hosting responds to them.
Warning: The following signals are only for games running on Linux-based operating systems.
SIGTERM
SIGTERM is a generic signal that triggers process termination. It’s similar to SIGKILL, except that the process can block, handle, or ignore it. You can think of SIGTERM as a way to politely request a process to end (terminate).
Multiplay Hosting sends the build executable process a SIGTERM signal when stopping the server. Build executables must respond to SIGTERM signals by exiting. If a build executable process doesn’t respond to a SIGTERM signal within 20 seconds, it receives a SIGKILL command.
Note: There’s no Windows equal to SIGTERM.
SIGKILL
SIGKILL is a generic signal that causes a process to immediately end (terminate). It’s similar to SIGTERM, but the process can’t block, ignore, or handle it. A SIGKILL always terminates the process.
Multiplay Hosting uses a SIGKILL signal to terminate build executable processes if they fail to respond to a SIGTERM signal within 20 seconds.
Note: The Windows equal of SIGKILL is PROCESS_TERMINATE.
SIGSEGV
SIGSEGV is a signal sent to a process trying to access an inaccessible memory location, resulting in a segmentation error. Some more common triggers of SIGSEGV signals include de-referencing null pointers, buffer overflows, and invalid permissions.
Multiplay Hosting sends a SIGSEGV signal to build executable processes when it detects that the process is misbehaving. Usually, this means the process is using too much memory (or CPU) or is attempting to access memory it doesn’t have access to.
Note: Multiplay Hosting uses SIGSEGV signals instead of other interrupt signals (like SIGSTOP) because other signals either don’t trigger a core dump or cause issues with the game engine.
Note: The Windows equivalents of SIGSEGV are PROCESS_QUERY_INFORMATION and PROCESS_VM_READ.