Looks to me the entire chunk might make sense to move to beginning of file, not just lfile = None. Just curious since couldn't immediately see anything in recent months that would have changed bevaviour there.
You're right that that's a problem, but I'm curious how you ended up in that codepath. default_pfx should be created at build-time. That code is there kind of for legacy reasons, when we used to create it on first-run instead. How did you end up with no default_pfx?
It appeared that some of my Proton files disappeared, but I'm not sure why. Perhaps an attempted Proton upgrade that failed part way through? I don't have any logs that could indicate the underlying problem.
After I "fixed" this issue, I ran into another issue due to my broken Proton install, that no amount of integrity verification could fix. I had to manually delete the "Proton 3.16" directory then verify the integrity of a Proton game for it to be redownloaded and extracted. This seems to point to a bigger underlying issue of a fragile installation/upgrade process?
Did you possibly run out of disk space during a Proton upgrade? I know that is one failure mode that we don't handle well. It sound like the dist/ folder failed to unpack from proton_dist.tar.gz correctly. Removing the dist/ folder will cause Proton to unpack again, which may have cleaned this up. Low disk space during the unpack is my best guess at what happened, does that sound plausible?
I don't think my system ran out of disk, but I can imagine lots of other ways in which an unpacking process could fail. Regardless: it got part way through then failed, leaving the Proton directory in an unusable state that could only be fixed manually.
My first reaction to this was to verity the integrity of the game I was trying to play, but this didn't fix it. There should be some way to verify the integrity of the Proton installation, which should catch corruption like this.
@aeikum would it in theory be possible to hook verification of Proton into verification of game? That's what users will be doing anyway when games don't run (before reporting issues)
Probably not as such. We could do a quick file presence test, but I worry about the performance impact given how many instances of proton are started during a game launch. I wish we knew what triggered this failure. What would cause Python's tarfile.extractall to fail without throwing an exception?
proton 3.16x2 2018-11proton 3.16-4x1 2018-11
I get the following error in the logs when trying to start Proton games, with Proton 3.16-4 Beta:
It looks like
lfileis first defined at https://github.com/ValveSoftware/Proton/blob/proton_3.16/proton#L215, but can be used earlier whenrun_wine()is called. Moving thelfile = Noneto the top of the file fixes this issue.