steampipe_fixup.py doesn't remove files. It only creates directories for empty_dirs and removes write permissions for no_write_paths files to work around steam pipe limitations.
If your d3d8.dll is missing that likely means your installation is very broken and there may be more wrong with it than just the default_pfx. The correct steps to take here are verifying the installation and checking steam pipe's logs to see if there's anything suspicious there.
Apr 11 19:33:03 [hostname] steam[PID]: FileNotFoundError: [Errno 2] No such file or directory: '.../Proton - Experimental [appid]/files/share/default_pfx/drive_c/windows/system32/d3d8.dll'
This line from the logs looks very suspicious - random [appid] thrown in the Proton's path and triple dot instead of ... Also python error coming form Steam directly? Is is completely made up?
The proposed fix is not correct. default_pfx and matching steampipe_fixups.json are a part of the Proton distribution. All the non-bleeding-edge builds are also tested and they do work when published. Trying to paper over a potentially broken local installation is not the answer.
ge-proton10-32x1 2026-04proton 9.0x1 2026-04proton experimentalx1 2026-04proton hotfixx1 2026-04WINEDEBUGx1 2026-04WINEPREFIXx1 2026-04d3d8.dllx2 2026-06libvkd3d-1.dllx1 2026-04libvkd3d-shader-1.dllx1 2026-04typelib.dllx1 2026-04win32s16.dllx1 2026-04
Bug Report: steampipe_fixups.py restore empties default_pfx but wineboot is never called to rebuild it
System Information
Description
At every game launch,
steampipe_fixups.py restoreis called and emptiesfiles/share/default_pfx/— removing all DLL files fromdrive_c/windows/system32/anddrive_c/windows/syswow64/, as well as fonts, registry files, and other prefix contents.After this cleanup,
make_default_prefix()in theprotonscript is never called to rebuilddefault_pfxbecausemissing_default_prefix()only checks whether the directory exists, not whether it contains valid content:Since
steampipe_fixups.py restoreempties the directory without removing it,missing_default_prefix()returnsFalseandwinebootis never invoked. The result is thatdefault_pfxremains empty, and every subsequent game launch fails with:Steps to Reproduce
steampipe_fixups.py restoreemptiesdefault_pfxwinebootis never called to rebuild itExpected Behavior
After
steampipe_fixups.py restoreruns,make_default_prefix()should detect thatdefault_pfxis empty or invalid and callwinebootto rebuild it.Suggested Fix
missing_default_prefix()should check for the presence of expected content, not just directory existence. For example:Workaround
Manually delete the entire
default_pfxdirectory before launching a game, forcingmissing_default_prefix()to returnTrueand triggering a rebuild viawineboot.Log Evidence
inotifywait — default_pfx deletions with no subsequent CREATE events
Proton log (steam-[gameid].log) — FileNotFoundError after cleanup
journalctl — confirming the error in system log
Additional Notes
This issue affects all installed Proton versions simultaneously, suggesting it is triggered by a common code path in
steampipe_fixups.py. The issue has persisted across multiple kernel and Proton updates over approximately 6-8 months.inotifywait confirmed that all 490 deletions occur within the same second (batch delete), and no CREATE events follow — confirming that
winebootis never invoked after the cleanup.