Steam creates zombie processes named fossilize_replay

Hey Folks,

I’ve tested the following on nixpkgs stable 25.11 and unstable. I have the following errors symptoms that have developed in the last week or so:

  • Steam creates zombie processes under fossilize_replay when processing a vulkan shader cache
  • Once I close a game, Steam still registers the game as running and cannot be fully stopped, even when I exit steam.
  • Cursor scales down to 100%, even with UI scaling enabled in Steam.

I have tested this on a fresh install with the following config:

nixos-configuration

My machine is a System76 Bonobo WS 14 with Intel i9 and NVIDIA RTX 2080 Super—which I don’t see on nixos-hardware. I haven’t tested the System76 generic image yet to see if that would help.

These are the shader pre-caching processes. They’re super CPU intensive and can take hours to days to complete for some games. I have nothing to confirm this, but I heavily suspect that (as usual) nvidia is especially badly affected.

I don’t think it’s technically a zombie; steam does not reap the process until it completes or you shut down steam itself (actually, pretty sure steam waits for it to complete if you shut it off); it’s unrelated to the game.

It’s an upstream bug anyway. Perhaps it’s a game you only started playing recently, maybe the game you’re playing finally got large enough that it keeps hitting the size limit and being deleted so it recompiles from scratch on launch, or maybe you only noticed it recently.

There are a bunch of upstream issues, and the community forums are full of people complaining/with workarounds. I think at one point I started creating a separate directory (there’s an env var) for a specific game and that mostly resolved the issue. Sadly you still can’t toggle it per-game.

Would it be ideal to let this run until this is done? I know that it’d take some time. Would it improve my framerates?

It improves framerates in that the game won’t be doing a bunch of shader compilation at runtime. Depending on how the game is implemented that can either improve loading speed or framerates when switching scenes (or when new objects pop into scene, or …).

That said, if the game updates frequently it will keep busting the cache and the shader compilation will have to be redone. Warframe especially needs to be recompiled practically every launch IME. So, whether it actually meaningfully benefits you, or just makes you unable to ever launch anything, really depends on what you play.

Personally I currently have it enabled, and just wait for games to finish compilation, but in the past that was too much overhead.

Okay, it’s pretty much worth it from my perspective.

What’s strange is that off of a reboot back into nixpkgs-unstable, I was able to close and stop my games successfully without Steam hanging. Second time I launch the game, when I close it through ingame fossilize_replay is a zombie and Steam recognizes it as running and unstoppable. I feel like there has to be something here either with Proton and/or Steam here

I’ll see what else I can see here from what Steam outputs to the console.

To provide a small update:

Yes! Disabling “Enable Shader Pre-caching” does seem promising so far. A couple of my repeat offenders (THE FINALS and ARC Raiders) are culled properly when the I close the game. I’m not too worried about performance since these two games do their own pre-loading of shaders in game. I’ll do additional experimentation and see if the issue stems from accessing a GPU shader cache, building it from scratch, or allowing background processing of Vulkan shaders.

Be aware that disabling shader pre-caching can break videos in some games.

Valve’s Proton cannot ship proprietary codecs, and as a workaround, they ship re-encoded videos using the shader pre-caching option. You can work around this by using a fork which ship said codecs, such as Proton-GE.

2 Likes