RE:NODE

Operations12 min read

Game server crash loops: find the bad mod

How to read a game server crash loop, tell a broken mod from a corrupt save or a bad config, and bisect a mod folder to the one file at fault in a few starts.

0 readers

A crash loop is a server that starts, dies and is started again, over and over, and the way out is always the same: stop the automatic restarts, find the first crash rather than the latest, decide whether it dies at the same point every time, and then remove things until it stops. When a mod is to blame - and on a modded server it usually is - you find it by bisection: take half the mods out, start, and keep halving whichever half contains the problem. Forty mods take six starts. Two hundred take eight. That is faster than reading two hundred changelogs and far faster than reinstalling everything, which removes the evidence along with the fault.

This post is the diagnostic method in detail, with the specifics for the mod systems people actually run: Minecraft plugins and modpacks, BepInEx, Oxide and Carbon, SourceMod, FiveM resources, Workshop-based mod lists. Exit codes and out-of-memory kills - the non-mod causes of a restarting server - are covered in why your game server keeps restarting, and this post leans on that one rather than repeating it.

First, stop the loop#

A loop destroys its own evidence. Each restart scrolls the console, rotates the log, and on some games overwrites the crash report with a newer one that says less. Before anything else:

  1. Stop the server with the panel's Stop button, and if it keeps coming back, Kill it.
  2. Disable anything that restarts it: a schedule, a restart-on-crash setting, a watchdog plugin, txAdmin's auto-restart on FiveM.
  3. Take a backup and lock it. You are about to move files around. If a save is involved, you want the state from before your experiments.

Then gather three things: the console output from the first start that failed, the newest crash report or dump the game produced, and the list of what changed since the last time it ran properly. That last one is usually the answer, and people skip it because they are certain nothing changed. Something did - a game update, a mod update pulled from the Workshop on restart, a config edit, a new player who did something unusual.

On RE:NODE a crash loop is also visible from the outside. A watcher checks every two minutes for uptime that went backwards or a server that went offline; three unrequested restarts in an hour put a warning on the server page and open a ticket automatically, and six suspend the server until someone looks at it. The warning is meant to reach you while the loop is still an annoyance, and stopping the server yourself ends the count.

Classify the crash by when it happens#

The single most useful observation is the moment the server dies. It narrows the search before you open a single file.

When it diesMost likely causesFirst thing to try
Before the game prints anythingWrong runtime version, bad startup line, missing binaryRead the first ten lines of output
While loading mods or pluginsA mod incompatible with the game version, or a missing dependencyRead the mod loader's log, then bisect
While loading the worldCorrupt save, a mod that adds world content, version conversionStart with a fresh world name
A few minutes after startA specific area, entity or scheduled event; memoryWatch the memory graph and the last lines before death
When a particular player joinsCorrupt player data, a mod item in an inventoryMove that player's data aside
At a fixed timeA schedule, an automatic event, a plugin timerCheck schedules and plugins with timers

Run the server twice and compare. If it dies at the same line both times, the fault is deterministic - a file, a mod, a value - and removing things will find it. If it dies at a different point each time, look at resources first: memory at the limit, disk full, CPU so starved that a watchdog decides the server has hung. Nothing in a mod folder causes a random crash time quite as reliably as running out of memory does.

Read the first error, not the last#

Logs from a crash loop are long and repetitive, and the instinct is to read the bottom. The bottom is the least informative line, because it describes the consequence. The cause is the first error or exception after the start banner, and often several screens above the final stack trace.

code
[12:04:11 INFO]: Loading 47 plugins[12:04:12 ERROR]: Could not load 'plugins/ShopPlus-3.2.jar' in folder 'plugins'org.bukkit.plugin.UnknownDependencyException: Unknown/missing dependency plugins: [Vault][12:04:15 WARN]: Plugin EconomyBridge v1.4 generated an exception while enablingjava.lang.NullPointerException: Cannot invoke "Economy.getBalance" because ......[12:04:31 ERROR]: Encountered an unexpected exception

The last line is the crash. The first error explains it: a dependency missing, so a second plugin got a null where it expected an economy, so something further down fell over. Fix the first, and the others usually vanish. How to read a server console has the general technique for reading stack traces upward and the lines that only look fatal.

Where to find the first error depends on the game, and game server logs explained has the paths. The ones that matter most for crash loops:

  • Minecraft: logs/latest.log and the newest file in crash-reports/, plus hs_err_pid*.log in the server root if the JVM itself crashed.
  • BepInEx games (Valheim and others): BepInEx/LogOutput.log, which lists every plugin as it loads.
  • Rust with Oxide: oxide/logs/; with Carbon, carbon/logs/.
  • Source games with SourceMod: addons/sourcemod/logs/errors_<date>.log.
  • FiveM: the server console and txAdmin's logs; resource errors print with the resource name in brackets.
  • Unreal Engine servers (Palworld, Satisfactory, Abiotic Factor, The Isle): <Project>/Saved/Logs/<Project>.log and Saved/Crashes/.

Rule out the boring causes in five minutes#

Before touching mods, eliminate the causes that are not mods. Each takes a minute and each is responsible for a large share of loops.

  • Memory. Look at the memory graph in the minute before each death. A line that climbs to the plan's limit and then drops vertically is an out-of-memory stop, not a crash. On RE:NODE the container is stopped at the limit and restarts clean rather than swapping. More memory, fewer mods or a smaller view distance is the fix, not bisection.
  • Disk. A full disk makes saves fail, and a failed save can leave a zero-byte world file that crashes the next start. Check free space in the file manager or with df -h.
  • Ports. Address already in use, Failed to bind or BindException means the port is taken - often by a previous instance that has not fully exited, or because two servers share a port after a copy.
  • Credentials. A Steam game server token that was revoked or used by another server, an expired Cfx.re key, a Klei token that was regenerated. These usually print a clear message and exit, which a restart policy then repeats forever.
  • Version. A game update the night before, with mods built for the previous version. The mod loader's log will usually name the version mismatch.

If none of these explains it, the fault is in the files: mods, configuration or the world.

Separate the world from the mods#

This test is the one people skip for hours, and it takes one start. Change the world or save name in the startup settings to something new, so the server creates a fresh world beside the old one, and start it with the mods still installed.

  • The fresh world starts and stays up. The problem is in the save - a corrupt chunk, a broken entity, a player inventory holding an item from a removed mod. Your mods are probably fine.
  • The fresh world crashes the same way. The problem is in the installation - mods, plugins, configuration or the game files. The world is probably fine.

Change the name back afterwards. The fresh world is a diagnostic, not a replacement, and the original is untouched beside it. For games keyed on a server name rather than a world name (Project Zomboid, Don't Starve Together), copy the server to a test name instead.

If the world is the problem, the fix is game-specific: removing a corrupt region file in Minecraft (see chunk errors and world corruption), restoring the last backup that loads, or deleting one player's data file so their character is recreated. A world from a backup taken before the crashes began is often the fastest way out, at the cost of whatever was built since.

Bisecting mods to find the one at fault#

When the fresh-world test points at the installation, and the first error does not name a culprit, bisect. The method is the same on every game:

  1. Make a folder outside the mod directory called something like disabled.
  2. Move half the mods into it. Keep dependencies with the mods that need them - a library mod moved away from its dependants produces a different error and confuses the result.
  3. Start the server. If it crashes in the same way, the fault is in the half still installed. If it starts, the fault is in the half you moved.
  4. Keep halving the suspect group until one mod remains.
  5. Put everything else back and confirm the server starts with only that one removed.

The number of starts is the base-two logarithm of the mod count, rounded up: 16 mods need 4 starts, 64 need 6, 256 need 8. Write down each round - which mods were in, what happened - because by round five nobody remembers.

Two complications are common. The fault may be a pair of mods that conflict, in which case both halves start fine on their own; when that happens, keep one half fully installed and bisect the other against it. And some faults depend on the world: a mod that crashes only when a particular block or creature is loaded. Bisect with the real world (on a copy), not a fresh one, when the fresh world started fine.

Where the mods live, by system

Mod systemFolder to bisectHow to disable one
Paper/Spigot pluginsplugins/Move the .jar out; leave its data folder
Forge, NeoForge, Fabricmods/Move the .jar out; check dependants
BepInEx (Valheim, others)BepInEx/plugins/Move the .dll or its folder out
Oxide / uMod (Rust)oxide/plugins/Move the .cs out; Oxide unloads it live
Carbon (Rust)carbon/plugins/Move the .cs out
SourceModaddons/sourcemod/plugins/Move the .smx into plugins/disabled/
FiveMserver.cfg ensure linesComment the line out with #
Project ZomboidMods= and WorkshopItems= in the server .iniRemove the ID from both lines
DayZ, Arma 3the -mod= startup parameterRemove the @Mod from the list

SourceMod treats plugins/disabled/ as a place it will not load from, which makes it the tidiest of the lot. Oxide and Carbon reload plugins without a restart, so a plugin that crashes the whole server on load is rare there; a crash loop on a Rust server with frameworks is more often the framework itself being out of date after a game update. On FiveM, removing a resource that others depend on - a framework core, an inventory, oxmysql - takes most of the server with it, so bisect the add-on resources and leave the core in place.

Bisecting by moving files is safest done in the file manager or over SFTP with the server stopped. SFTP and the file manager covers moving whole folders without uploading them again.

Configuration that crashes the server#

Mods are not the only files that can crash a game. A config file with a syntax error is one of the commonest causes of a loop after an edit, and the error message is often generic.

  • JSON (Palworld-adjacent tools, Valheim mod configs, many Unity games): one trailing comma or a missing quote and the parser gives up. Paste the file into any JSON validator.
  • YAML (Minecraft plugin configs, paper-global.yml): a tab instead of spaces, or indentation off by one, breaks the file. Paper and most plugins print the line number.
  • INI (Unreal games): a value on a single very long line, as in PalWorldSettings.ini, is easy to break by deleting a bracket or comma.
  • XML (7 Days to Die, DayZ economy files): an unclosed tag. DayZ is particularly unforgiving with types.xml, and an error there can stop the server or quietly empty the loot economy.
  • Lua (Project Zomboid's SandboxVars.lua, Don't Starve Together mod settings): a missing comma between entries.

The quickest test for a config fault is to rename the file and start once; most games regenerate a default. If the server starts, the fault is in your edits. Then compare your version against the default, or bisect the edits the same way you would bisect mods. Keeping configuration in version control, or at least a dated copy before each edit, makes this a two-minute job.

When the game files themselves are broken#

If a fresh world crashes, the mods are all removed, the configs are defaults, and it still crashes, the remaining suspect is the installation. Causes include an update interrupted by a full disk or a stop mid-download, a file edited inside the install directory, or a mod installer that overwrote a game file.

For Steam games, a SteamCMD update with validate hashes every file and replaces anything that does not match the published version. On Pterodactyl-based panels a reinstall from the panel does a similar job, but read what your host's reinstall does to your files before pressing it - some remove more than the game binaries. Take a backup first regardless. Automating game server updates explains why validate is a repair tool rather than something to run every start.

Preventing the next one#

A crash loop is cheap to diagnose when you have three things in place beforehand:

  • A record of changes. One line per change: date, what was added or updated, by whom. Ten seconds each, and it turns "nothing changed" into "the Workshop updated two mods on Tuesday".
  • A backup before each change, locked so rotation does not remove it.
  • A test server for mod updates and game patches. Running a test server beside production covers a cheap setup, and keeping a modded server clean covers the habits that keep a mod list maintainable.

And update one mod at a time where you can. Ten updates at once followed by a crash is a bisection; one update followed by a crash is an answer.

FAQ#

How do I find which mod is crashing my server?

Read the first error in the log after startup - it often names the mod. If it does not, move half the mods out of the mods folder, start, and keep halving whichever half still crashes. Each start halves the suspects, so even a large mod list takes fewer than ten starts.

Why does my server crash at a different point every time?

Variable crash points usually mean a resource problem rather than a broken file. Check the memory graph for a climb to the limit, check free disk space, and check whether CPU is pinned at the plan's limit long enough for a watchdog to give up.

Can a corrupt world cause a crash loop?

Yes, and it is easy to confuse with a mod problem. Start the server once with a new world name: if the fresh world runs, the save is the problem. Restore the last backup that loads, or remove the corrupt region or player file.

Should I reinstall the server to fix a crash loop?

Only after everything else, and only after a backup. Reinstalling removes the evidence and rarely touches the cause, which is usually in the mods, configs or world that you would put straight back.

Will my host suspend a server that keeps crashing?

On RE:NODE, three unrequested restarts in an hour raise a warning and open a ticket, and six suspend the server. Stopping it yourself while you investigate ends the loop and the count.


Comments

Completely anonymous: no account, no email, no cookie. We store the name you type, the text and the time - nothing else. Links are limited and markup is not rendered.

0/2000