Quick answer: Record the GPU, OS, CPU, RAM and resolution with every crash, group repeat crashes into one issue, and look at the hardware spread for each one. If most occurrences share a GPU vendor, driver branch or device model that is a much smaller share of your players, you have a hardware-specific bug. Bugnet's Unity, Godot, Unreal and web SDKs record this automatically, and each stacked crash lists its occurrences with their version, OS and device.

Some crashes are your code on every machine. Others only happen on one GPU vendor's driver, on integrated graphics, on 4 GB phones or on Steam Deck. Knowing which kind you have decides the fix: a code change, a driver workaround, a lower default setting, or a note in your known issues. The answer is in the hardware attached to each crash.

What to capture with every crash

FieldWhy it matters
GPU modelDriver and shader-compiler bugs are vendor and generation specific
Graphics API and driverDirectX 12, Vulkan and Metal fail differently; old drivers cause most “works on my machine” crashes
OS and versionWindows builds, Proton, macOS versions and Android API levels
RAM and VRAMOut-of-memory crashes cluster on low-memory machines
ResolutionUltrawide and 4K expose UI and render-target bugs
Game versionSeparates a new regression from an old bug on new hardware

Where to get it in each engine

Bugnet's SDKs already pack the useful part into each report's device string: CPU and core count, GPU, RAM and resolution in Unity and Godot (plus the model name on mobile in Godot), CPU, GPU and RAM in Unreal, and GPU, memory, cores and resolution on the web. The OS is recorded separately, along with the platform and game version. Pygame reports include CPU, RAM and resolution.

Read the spread for each crash

  1. Group first. Hardware patterns only show up when repeat crashes are one issue. In Bugnet, crashes with the same title stack onto one bug with an occurrence count.
  2. Open the occurrences. The bug page's Details panel shows the first report's OS and device, and each stacked occurrence keeps its own version, OS and device, so expanding the list on the bug shows you at a glance whether they are all “GPU: Intel” or a mix.
  3. Compare with your players. A crash that is 80% one vendor matters only if that vendor is far less than 80% of your players. Use your own session data, or the Steam Hardware Survey as a rough baseline for PC.
  4. Check the version. If every occurrence is on the latest build, suspect your change first; if they span many versions, suspect the platform.

At the game level, Bugnet's crash analytics break the crash-free session rate down by platform and by version, and on Studio the Crash Grouping view shows how many crashes each group has on each platform. The Players page lists each player's sessions with platform, OS and device, which helps when one player reports repeated crashes.

Add the driver and graphics API

The device string names the GPU but not the driver. To capture the driver and API too, log them on every scene or level load. Bugnet attaches recent log lines to every automatically captured error, so they arrive with the crash:

Unity
// Subscribe once: SceneManager.sceneLoaded += OnSceneLoaded;
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
    Debug.Log($"[HW] {SystemInfo.graphicsDeviceName} | {SystemInfo.graphicsDeviceVersion} | VRAM {SystemInfo.graphicsMemorySize} MB");
}
Godot 4
func _log_hardware() -> void:
    print("[HW] ", RenderingServer.get_video_adapter_name(), " | ",
        RenderingServer.get_video_adapter_api_version(), " | ", OS.get_video_adapter_driver_info())

What to do with a hardware-specific crash

Create a free Bugnet project and add the SDK for your engine, and every crash arrives with its hardware. For GPU hangs specifically, see how to capture GPU crashes and device resets.

Frequently asked questions

How do I find out which GPUs my game crashes on?

Record the GPU, OS and game version with every crash, group repeat crashes into one issue, and look at the hardware across its occurrences. Bugnet's Unity, Godot, Unreal and web SDKs record the GPU automatically, and each stacked crash lists its occurrences with their version, OS and device.

How can I tell a driver bug from a bug in my code?

If most occurrences of a crash share a GPU vendor, driver or device model that is a much smaller share of your players, it is probably hardware-specific. If it hits every kind of hardware, and only on your latest build, suspect your code.

Does Bugnet record the GPU driver version?

Not in the device string, which holds the GPU model, CPU, RAM and resolution. Log the driver and graphics API on each scene load and they arrive in the recent log lines attached to automatically captured errors.

Can I see crash rates by platform?

Yes. Bugnet's crash analytics break the crash-free session rate down by platform and by version.

What should I do about a crash on old GPU drivers?

Detect the driver version at startup and ask the player to update it, and add the issue and workaround to your known-issues page.

One crash, a thousand occurrences, one GPU vendor: that is a driver bug, and it needs a different fix.