SA-MP Server Not Starting on Linux VPS: Complete Troubleshooting Guide

Technical guide to diagnose and fix SA-MP server that won't start on Linux VPS: segfault, missing libs, permissions, port in use, and silent plugin crashes.

An SA-MP server that won’t start on a Linux VPS is one of the most common problems for anyone hosting their own gamemode. The official samp03svr binary was compiled in 2015 for Linux i386, and on modern distributions (Ubuntu 22.04+, Debian 12, AlmaLinux 9) it runs into library, permission, and port configuration mismatches that produce confusing error messages when they produce any at all.

This guide covers systematic troubleshooting: how to capture the real error, identify the root cause among the five most common ones (wrong architecture, missing 32-bit libs, permissions, port in use, plugin crash), and apply the right fix. The target audience is the owner who already has root SSH access and wants to understand what’s happening, not just “make it work somehow”.

Estimated time: 15-30 minutes to run the full diagnostic, plus the time to apply the specific fix (from 2 minutes for a permission issue up to 20 minutes for a plugin rebuild).

Prerequisites

Prerequisites

You need a 64-bit Linux VPS with root SSH access, the samp03svr binary (or omp-server if you’re using open.mp) already extracted to a directory, and server.cfg configured with at least one valid gamemode. This guide assumes Ubuntu 22.04/24.04 or Debian 12 — on RHEL-based distros (AlmaLinux, Rocky), swap apt for dnf and adjust package names accordingly.

Before you start, validate the basic environment:

Minimum distro Ubuntu 22.04 / Debian 12
Architecture x86_64 (with i386 multiarch)
Default port UDP 7777
Minimum RAM 512 MB

Capture the real error before anything else

The first trap is assuming “won’t start” means “produces no output”. Almost always the binary is printing the error to stderr and disappearing from the screen too fast — or the error is being discarded by the way you’re running the server.

01

Enter the server directory and run the binary in the foreground, with no wrapper:

cd /home/samp/server
./samp03svr

If you see “No such file or directory” even with the file present (ls -la samp03svr confirms it), you’re hitting the classic missing 32-bit libs problem — skip to the next section. If you see a message about a plugin, gamemode, or port, write it down literally.

02

If the terminal goes back to the prompt with no message at all, capture stderr explicitly:

./samp03svr 2> error.log
cat error.log

An empty output here means a silent segfault — the binary was killed by the kernel before it could print anything. Confirm with strace:

sudo apt install -y strace
strace -f -e trace=openat,execve ./samp03svr 2>&1 | tail -30

The last line before +++ killed by SIGSEGV +++ shows which file the loader was trying to open when it died — usually a missing .so.

Beware of nohup and screen

If you always run the server with nohup ./samp03svr & or inside screen, stderr may be going to nohup.out or nowhere at all. For troubleshooting, always test in the foreground first with explicit redirection.

Cause 1: missing 32-bit libs (the most common)

samp03svr is a 32-bit i386 ELF. On a modern 64-bit VPS, multiarch support is not enabled by default and the Linux dynamic loader can’t resolve the dependencies.

01

Confirm the binary’s architecture:

file samp03svr

Expected output: ELF 32-bit LSB executable, Intel 80386. If you see ELF 64-bit, you’re running an unofficial build — skip to the next section.

02

List missing dependencies:

ldd samp03svr

If the output has lines like libstdc++.so.6 => not found or not a dynamic executable, the 32-bit libs are missing.

03

Enable multiarch and install the i386 libs:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y libc6:i386 libstdc++6:i386 lib32gcc-s1

On Debian 12 the package is lib32gcc-s1. On Ubuntu 22.04, the same name works. On RHEL-based distros, use dnf install -y glibc.i686 libstdc++.i686.

04

Confirm the fix worked:

ldd samp03svr
./samp03svr

Every line from ldd should show real paths (no not found), and the binary should come up at least far enough to print the SA-MP banner.

Cause 2: wrong permissions on the binary or directory

A permission problem manifests as an obvious “Permission denied” — but also as “No such file or directory” when an intermediate directory doesn’t have execute permission (the x bit).

01

Make sure the binary is executable:

chmod +x samp03svr
chmod +x plugins/*.so 2>/dev/null
02

Confirm that the user who will run the server owns the entire directory. Assuming user samp:

sudo chown -R samp:samp /home/samp/server

If you’re running as root (not recommended — see FAQ), skip this step.

03

The scriptfiles/ and logs/ directories need write permission:

chmod -R u+w scriptfiles logs gamemodes

Cause 3: UDP port 7777 in use or blocked

SA-MP uses UDP 7777 by default. If another process is listening on that port — or the firewall is blocking it — the server may start and immediately die, or come up but stay unreachable from outside.

01

Check if the port is free before starting:

sudo ss -ulpn | grep 7777

If it returns something, another process is using it. Identify the PID and decide: kill the process, or change the port in server.cfg (the port line).

02

Confirm the firewall allows incoming UDP 7777:

sudo ufw status
sudo ufw allow 7777/udp

If you use iptables directly:

sudo iptables -A INPUT -p udp --dport 7777 -j ACCEPT
Test from outside

To confirm the port is actually reachable from the internet, run from another machine: nmap -sU -p 7777 YOUR_IP. If you see open or open|filtered and the server is running, you’re fine. If you see closed, there’s a firewall in the path (datacenter, cloud security group, or the host itself).

Cause 4: plugin crash on load

A plugin that’s incompatible with the server version or the VPS glibc is the second most common cause. The typical symptom: the server prints the banner, shows “Loading plugin: X”, and disappears without further explanation.

01

Edit server.cfg and comment out every plugin (prefix the line with ; or delete it):

nano server.cfg

Find the plugins ... line and clear its contents temporarily, leaving just plugins (empty).

02

Bring the server up with no plugins. If it runs, the problem is a plugin. Go back to server.cfg and add plugins back one by one, restarting between each addition, until you reproduce the crash. The last plugin you added is the culprit.

03

For problematic plugins, confirm the architecture:

file plugins/mysql.so

It must be ELF 32-bit (same as samp03svr). A plugin compiled as 64-bit won’t load on a 32-bit server. Download the correct version from the plugin’s official repository.

Verification: confirm the server is responding

01

With the server running, confirm it’s listening:

sudo ss -ulpn | grep 7777

Expected: a line with samp03svr or your process PID.

02

Check the server’s own log:

tail -f server_log.txt

Look for lines like Started server on port 7777. That’s the definitive sign that the server is ready to accept connections.

Troubleshooting common errors

”Bind to UDP port 7777 failed”

Another process is using the port. Change port in server.cfg to 7778, or kill the conflicting process (sudo lsof -i :7777 then kill -9 PID).

”Failed to allocate memory”

VPS with low RAM and a heavy gamemode. Confirm with free -m. If free RAM is under 100 MB, upgrade the plan or enable temporary swap (2 GB) to confirm memory was indeed the cause.

”Plugin failed to load”

Almost always a glibc mismatch. Very new distros (Ubuntu 24.04) ship glibc 2.39, and older plugins were compiled against 2.27. Compile the plugin locally or pick a more conservative LTS distro (Ubuntu 22.04, Debian 11).

Do not run as root in production

Running the SA-MP server as root exposes the entire VPS if the binary or a plugin gets exploited. Create a dedicated user (adduser samp) and configure a systemd service with User=samp.

Next steps

With the SA-MP server running, it’s worth hardening the operation:

  • Configure a systemd service for auto-restart on crash
  • Enable logrotate on server_log.txt so it doesn’t fill the disk
  • Migrate the gamemode to open.mp for more detailed crash logs
  • Set up automatic backup of the scriptfiles/ folder
  • Monitor server health via the SA-MP query API

If you’re hosting SA-MP in production, Hostini game server plans ship with Linux pre-configured, multiarch enabled, and datacenter-level DDoS protection out of the box — which eliminates the three most common causes in this guide right at provisioning time.

Frequently asked questions

Why does samp03svr run fine in the terminal but fail in the background?

When run in foreground, the binary inherits the TTY and shows loader errors. In background (nohup, screen, systemd), stderr can be silently dropped. Always redirect stderr to a file (2> server-error.log) before assuming the server just won't come up.

Do I really need 32-bit libc on a 64-bit VPS?

Yes. The official samp03svr binary is ELF 32-bit i386. On a modern 64-bit Linux VPS, you need the multiarch package (libc6:i386 + libstdc++6:i386). Without it, the error is 'No such file or directory' even with the file present, because the 32-bit loader isn't installed.

Can I run open.mp instead of the original SA-MP?

Yes, and it's usually a better choice for new servers. open.mp is compatible with legacy pawn gamemodes, ships native 64-bit binaries, and has much more detailed crash logging. But the troubleshooting procedure (permissions, port, plugins) is identical to SA-MP.

The server comes up, stays online for 30 seconds, and dies. What's going on?

It's almost always a plugin crash during the OnGameModeInit callback. Comment out every plugin in server.cfg, bring the server up, and add plugins back one at a time until you reproduce the crash. The usual suspect is MySQL R39+ or plugins compiled for a different ABI.

How do I know if UDP port 7777 is being blocked by the firewall?

Run 'sudo ufw status' or 'sudo iptables -L -n | grep 7777'. To test from outside, use 'nmap -sU -p 7777 YOUR_IP' from another machine. If the port shows 'open|filtered' but the server doesn't respond, the issue is the datacenter firewall or the cloud security group.

Is it safe to run the SA-MP server as root?

No. If the binary or any plugin has an exploitable bug, the attacker gets a root shell. Create a dedicated user (adduser samp), give it ownership of the directory, and run the server under that user via systemd with User=samp. High security gain for five minutes of work.

Topics:
Next steps VPS, dedicated or managed panel for FiveM, SAMP, MTA, Tibia and more.Host your game server with Hostini →
Was this tutorial helpful?
Chat on WhatsApp