Quick answer: A crash is when the game terminates and closes; a freeze is when it stops responding but stays open, stuck and unresponsive. Both end the session but have different causes and signatures.
Players often lump crashes and freezes together as 'the game broke,' but to a developer they're distinct failures with different causes. Telling them apart helps you diagnose. Here's the difference between a crash and a freeze.
What a Crash Is
A crash is when the game terminates unexpectedly, the process closes, the window disappears, the game is gone. It's usually caused by an unhandled exception or a fatal error that the program can't continue past, so the operating system or runtime shuts it down.
Crashes typically leave a clear signature: a stack trace showing where the failure occurred. Bugnet captures crashes automatically with these stack traces, so a crash, despite being abrupt, is often quite diagnosable because of the technical evidence it leaves behind.
What a Freeze Is
A freeze (or hang) is when the game stops responding but stays open, the window is there, but it's stuck, unresponsive to input, often with a spinning cursor or frozen frame. The program hasn't terminated; it's just not progressing, usually stuck in a deadlock, an infinite loop, or waiting forever on something.
Freezes can be harder to diagnose than crashes because they may not produce a clean stack trace at a single failure point, the program is stuck, not crashed. Capturing context around when and where the game stopped responding helps pin down the cause.
Why the Distinction Matters for Diagnosis
The distinction guides diagnosis. A crash points you to an unhandled exception or fatal error, with a stack trace to follow. A freeze points you to a deadlock, infinite loop, or blocking operation, a different class of problem requiring different investigation, often around threading or long-running operations.
Both end the player's session and feel equally broken to players, so both matter. Bugnet captures crashes with stack traces and helps you spot patterns in unresponsiveness, so treat crash and freeze as distinct failure modes: a crash terminates with a trace, a freeze hangs without progressing, each pointing at different causes.
A crash terminates and closes the game (leaving a stack trace); a freeze stops it responding while staying open (often a deadlock or infinite loop). Both end the session but point at different causes.