ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.07k stars 1.05k forks source link

Half-Life (70) #4850

Open Drek282 opened 3 years ago

Drek282 commented 3 years ago

Compatibility Report

System Information

I confirm:

Proton Log

Symptoms

Half-Life fails to start. wine/proton error "hw.dll failed to load..."

Reproduction

Force compatibility mode with any Proton version, start the game.

Drek282 commented 3 years ago

Just in case it's a question. Half-Life runs perfectly in it's native Linux version, but there are mods where the only functioning versions available are Windows versions. It's also worth noting that running them this way through Proton has worked perfectly until recently.

kisak-valve commented 3 years ago

Hello @Drek282, these look like some lines of interest from your log:

err:module:open_builtin_file failed to load .so lib "/home/llewen/Games/SteamLibrary/steamapps/common/Proton 6.3/dist/lib/wine/dinput.dll.so"
err:module:import_dll Loading library DINPUT.dll (which is needed by L"Z:\\home\\llewen\\Games\\SteamLibrary\\steamapps\\common\\Half-Life\\hw.dll") failed (error c000007a).
Drek282 commented 3 years ago

Ok, so how would you propose I fix that? One of the issues with Valve's Proton is that it isn't easy to fix those kinds of issues with something like winetricks or winecfg. All my peripherals are working, and have worked for the past year.

Drek282 commented 3 years ago

Ok, a number of data points which might affect the loading of that library:

I'm going to try recompiling that G13 driver and see if that is the issue.

Drek282 commented 3 years ago

Recompiling the G13 driver seemed to make the USB error go away, but I'm still getting the hw.dll failed to load error. I also use software for my G510s keyboard that is not from the Debian ecosystem. I've never had any significant issues with it and barely remember how I installed it or how it works. I believe it loads with KDE. And as I said, I was able to run the Windows version of Half-Life with mods for around a year, with few issues, until now.

Drek282 commented 3 years ago

I also run loads of other Windows games through Lutris, and I don't think any of them have mysteriously stopped working. I think the Lutris wine versions I use are "Protonified" versions in a lot of cases. And none of this is a complaint about Valve. Valve has done more for gaming on Linux than any other corporate body in the history of PC gaming. I'm a huge fan of Valve.

So thank you. I just wanna get ma games working... :(

kisak-valve commented 3 years ago

As a blind guess, maybe try moving the game's wineprefix (/home/llewen/Games/SteamLibrary/steamapps/compatdata/70/) somewhere out of the way so that Proton generates a new wineprefix and see if that has an effect while trying to run the game.

If that doesn't have an effect, you can try something similar with the dist folder in /home/llewen/Games/SteamLibrary/steamapps/common/Proton 6.3/. Moving/removing the dist folder should get Proton 6.3-4 to re-unpack itself the next time it is run.

If either of those help, then please check if there's a difference with dinput.dll or dinput.dll.so between the new and older folders.

Drek282 commented 3 years ago

Those two suggestions didn't work. Going back to Proton 4.11 did. Thank you for your help.

I had already tried all the Proton versions from 5.0 and up, but I hadn't gone back as far as 4.x or 3.x.

alasky17 commented 3 years ago

@Drek282 Could you try running the game on 6.3-4 without any mods playing? Half-Life is running for me on 6.3, but I don't have any mods - I'm wondering if its one of the mods that is causing the error.

Drek282 commented 3 years ago

I tested it without mods and it wouldn't start on 6.3. Both the main game and the mods work on 4.11.

alasky17 commented 3 years ago

@Drek282 Do you have any controllers plugged in? I'm trying to figure out why I don't see the failure. Also - there was a game update 5 days ago, so its possible that broke things that were previously working.

Drek282 commented 3 years ago

As I said, I have a G13 gameboard installed. I've never had any issues with it causing problems with any games, wine or native linux.

Drek282 commented 3 years ago

I unplugged the G13, killed the g13d process, switched to Proton 6.3-4 and attempted to start the base Half-Life game and received the same hw.dll error.

Drek282 commented 3 years ago

I think it's pretty reasonable to deduce that the recent Half-Life update is the source of the issue.

Drek282 commented 3 years ago

When I attempted to post an issue on the github for Half-Life, they sent me here. I wouldn't be surprised to find that the issue affects more than people running the Windows version on Linux. hw.dll failing to load is an old issue that has a nasty habit of rearing it's head every now and again.

alasky17 commented 3 years ago

@Drek282 Thank you for testing without the G13 just to narrow that down :) I also wouldn't be surprised if it is a bug on Windows too and we are just hitting it more frequently :/

alasky17 commented 3 years ago

@Drek282 2 more requests to attempt to get to the bottom of this in case it is in our power to fix: 1) Could you "verify the integrity of the files" for Proton 6.3-4 (under properties -> local files) - just to make sure something didn't get messed up in there. 2) Could you get a log with +module,+dinput added to the rest of the channels?

Drek282 commented 3 years ago

Verified Proton 6.3-4 files. That wasn't likely to be the issue seeing as the crash occurs with all versions of Proton >= 5.0.

alasky17 commented 3 years ago

@Drek282 I'm getting an error that I can't connect to that file server - is the log small enough to just attach here?

Drek282 commented 3 years ago

steam-70.zip

Drek282 commented 3 years ago

Sorry, hosting buggered up and didn't realize I could just drag and drop files. Reading comprehension ftw...

alasky17 commented 3 years ago

@Drek282 That didn't actually pick up the extra logging channels - try instead using this as the launch option: WINEDEBUG=+timestamp,+pid,+tid,+seh,+debugstr,+loaddll,+mscoree,+module,+dinput %command%

Drek282 commented 3 years ago

Ya, I just didn't have the right syntax. Once more into the breach...

Drek282 commented 3 years ago

steam-70.zip

alasky17 commented 3 years ago

@Drek282 based on "16970.231:0134:0138:warn:module:dlopen_dll failed to load .so lib "/home/llewen/Games/SteamLibrary/steamapps/common/Proton 6.3/dist/lib/wine/dinput.dll.so": /home/llewen/Games/SteamLibrary/steamapps/common/Proton 6.3/dist/lib/wine/dinput.dll.so: undefined symbol: SDL_JoystickGetDeviceInstanceID" it seems like your SDL is too old. Could you try using the Steam runtime libraries?

Drek282 commented 3 years ago

I will try that. I use system libraries because the libraries provided with Steam cause instability, including lockups going in and out of suspend.

Drek282 commented 3 years ago

I've also been using system libraries for over a year without issues.

Drek282 commented 3 years ago

Switched to Valve's versions of those libraries and experienced the same error on Proton 6.3-4.

Drek282 commented 3 years ago

To be clear I commented out the following in /etc/environment, and rebooted:

export STEAM_RUNTIME_PREFER_HOST_LIBRARIES=0

alasky17 commented 3 years ago

@Drek282 Could you upload a log with the same channels and the steam runtime libraries, just in case that revealed something new?

Drek282 commented 3 years ago

steam-70.zip

Drek282 commented 3 years ago

Sorry, should have mentioned that I use system versions of libraries. I know I thought of it...

Drek282 commented 3 years ago

A lot of experience hosting servers and the system versions of those libraries tend to work better in that context as well...

Drek282 commented 3 years ago

Kinda makes sense due to the fact that in Linux those libraries can have kernel as well as other dependencies.

Drek282 commented 3 years ago

And even if the dependencies aren't strict, distros will choose versions of libraries that work well with the kernels they support, and vice versa. It's just generally a better idea to use system libraries.

Drek282 commented 3 years ago

I don't know whether this is a clue to what is going on or not, but it might be.

Half-Life stopped loading on Proton 4.11-13 a few days ago. I downgraded to 3.16-9 and it started loading again. That got me thinking that perhaps something had been installed in the compat folder that was causing the problems. I renamed the compatdata/70 folder and switched back to 6.3-4. I got the hw.dll error again.

I deleted the new compatdata/70 folder and switched back to 4.11-13 and tried it again, and it worked.

No idea what any of this means, but I thought you might want to know. I'm going to try with all the versions up to 6.3-4 and see what happens. I will let you know.

Drek282 commented 3 years ago

The highest Proton version that doesn't produce the hw.dll error when I start with a fresh compatdata/70 folder is Proton 5.0-10. If I switch to a higher version of Proton and then switch back to a lower version of Proton without deleting/renaming that folder the highest version of Proton that doesn't produce that error is 3.16-9.

roidal commented 3 years ago

Looks like the problem ist caused by the libSDL2 in the steamapps/common/Half-Life directory.

Deleting both, the so-file and the symlink, fixes the problem.