TeamSpen210 / HammerAddons

Useful tweaks and content for Source Engine Games
123 stars 36 forks source link

[WinError 5] Access Denied in Postcompiler #269

Open TPEcool opened 3 months ago

TPEcool commented 3 months ago
[E] logger.except_handler(): Uncaught Exception:
Traceback (most recent call last):
  File "hammeraddons\postcompiler.py", line 315, in <module>
  File "trio\_core\_run.py", line 2010, in run
  File "hammeraddons\postcompiler.py", line 303, in main
  File "srctools\bsp.py", line 1455, in save
  File "srctools\__init__.py", line 534, in __exit__
PermissionError: [WinError 5] Access denied: 'd:\\steam\\steamapps\\common\\portal 2\\sdk_content\\maps\\tmp_3' -> 'd:\\steam\\steamapps\\common\\portal 2\\sdk_content\\maps\\zoo_under_walkway.bsp'

When running the postcompiler, I sometimes get this message, and sometimes I don't. This always causes the postcompiler to crash/quit. I have no idea why it's getting denied permission. Perhaps implement a system where it basically retries this a couple times in case of an exception? If it's still unsuccessful, the exception can be thrown anyway.

TeamSpen210 commented 2 months ago

That could be because you have the BSP open in another program, like the game - if open it can't be written to, so it gets an access denied error. I have the postcompiler write the new BSP to a temp file then rename it over the original, that way it's more difficult to get a partially-written BSP.

TPEcool commented 2 months ago

The file is open in the game. However, the game is running a BSP from portal2/maps/ and the postcompiler is getting denied access to a map in sdk_content/maps/. The compile chain ends with a copy command, which means the file in portal2/maps/ isn't a symlink to the one in sdk_content/maps/, in which case I could see how it would be getting denied access.

TPEcool commented 2 months ago

Also, this error results in dozens of temp files piling up and not being deleted.