Quantom of Solace Wine Incompatibility
-
Good morning,
Earlier this week, I tried to play Plutonium's new Quantum of Solace client for the first time. I frequently play Plutonium's clients for Call of Duty games under Wine on Arch linux, so expected it to work without a hitch.
However, on booting plutonium-quantum.exe in wine, the game almost immediately crashes without even opening a window, with the error code consistently being:
"wine: Unhandled page fault on read access to 10476490 at address 0090FC88 (thread 0114)"
To resolve this issue, I first tried launching the game in a directory under the wine prefix, then tried a 32-bit wine prefix, then different windows versions under wine (Windows XP, Vista, 7, 11, etc), then different wine (wine-ge, proton wine, wine-staging, etc) releases, all resulting in the same error.
In my spare time, I frequently do reverse engineering on other software, so I thought to review plutonium-quantum.exe in IDA Pro to hopefully resolve the issue. Based on my analysis and research, it seems that the error is either the result of a Themida anti-debug check detecting wine as a debugger (without notification to the user) then purposely crashing the application with an invalid read request, or Themida legitimately attempting to read from an invalid area of memory which would otherwise be valid under Windows.
Notably, disabling ASLR under both the PE32 flag and in the Linux kernel yielded no improved results.
When I began typing this post with the word "Themida" in the subject line, I saw several other posts regarding Themida in the other Plutonium clients, so it seems that Themida has not historically been an issue when attempting to run Plutonium clients under Wine.
Also, it is probably important to note that the same installation works under Windows 11 without issue. Furthermore, running Quantum of Solace without using Plutonium's client works without issue under the same Linux/wine configuration.
Having exhausted all of my ideas to resolve this issue, I wanted to make this post to ask if the Plutonium staff could take a look at this? I am not aware of official support for Wine, but as Plutonium's usage of Themida has not been problematic in Wine in the past, I wondered if maybe the Plutonium staff had a made a change to how they pack software, such as changing Themida versions, parameters, or similar? I am hoping that if there is an easy resolution available, the Plutonium staff may help me to resolve this issue, regardless of official support.
The alternative solution - me attempting to improve Themida compatibility in the Wine source code, while simultaneously being unable to effectively debug the problem due to Themida obfuscation and anti-debug detection - seems rather unpleasant.
Apologies if this is not the correct page to post this topic - I could not find a client support page for Quantum of Solace.
Thank you so much for any and all help you can offer.
-
Alternatively, if the Plutonium development team did switch Themida versions or configuration, if you could let me know what was changed, I can submit a request to Themida to improve their Wine compatibility in this area. In the past, Themida has done nearly all of the development required to improve their compatibility under Wine, as debugging it from the user's perspective is exceptionally difficult. There is a good chance they will look into the issue.
Hopefully there is an easier solution available to the development team, though!
-
Hey, thanks for the detailed post! At first glance it doesn't seem to be related to Themida, I can reproduce the crash you're seeing on a debug build with wine 9.3. Will see if we can fix this with reasonable effort, but Linux support (especially for games) is usually only supported on a "if it works it works"-basis, so no promises.
-
Eldor No worries, thank you for your prompt and kind reply! My mistake on the Themida part - this was my first time attempting to reverse engineer/debug an application packed with Themida, and I guess I had Plutonium's virtualised code confused with Themida's initialization.
Thank you so much for reviewing my rambling post and for taking a look at this. If you wouldn't mind, could you possibly add me as a friend on Discord? I had some further questions/information that could help in fixing this, but as Plutonium is not open source, they probably shouldn't be asked on the forum. My username is @amkillam - I'm on the Plutonium discord server.
Thank you so much for your help in fixing this either way, and let me know if I can be of any help - I have contributed to similar projects that are open source, so I should be able to make the necessary changes to wine, given a little extra information about the intended functionality where this client crashes under WIne.
-
IUseArchBtw-1 You're in luck, we managed to fix it and will ship this together with some other features in the near future. Login seemed "broken" (failed to open a web browser, could be related to my install or how Wine handles protocols), but works using the manual steps outlined in the announcement post. Thanks for reporting
-
Eldor thank you!! I can't wait to try it
-
Good evening Eldor ! Was this update ever pushed, and if not are there any workarounds? Would love to play this game again. Thanks
-
Thanks for reminding me! A new update that should fix Wine compatibility is now out, you can download it from https://cdn.plutonium.pw/quantum/plutonium-quantum.exe
-
Eldor Thank you so much!
It now gets much further than it did before but I am getting
"Error during initialization:
Failed to bind socket, error 10013." on startup.
I've tried various Wine versions and cleared the wine prefix but no luck - do you recognise this error? -
prophetarmed said in Quantom of Solace Wine Incompatibility:
Eldor Thank you so much!
It now gets much further than it did before but I am getting
"Error during initialization:
Failed to bind socket, error 10013." on startup.
I've tried various Wine versions and cleared the wine prefix but no luck - do you recognise this error?Try running with sudo/root.
-
Eldor Wow, that worked! Thank you!
-
This post is deleted!