kakra / wine-proton

Proton'ized Wine, served hot, extra spicy: Please read README.md as a starting point
https://github.com/kakra/wine-proton/blob/rebase/proton_3.16/README.md
Other
35 stars 1 forks source link

Just Cause 3 issue #9

Open WernerAUT opened 5 years ago

WernerAUT commented 5 years ago

Hello first thanks for your work :)

I tried your wine-proton build, it runs on my LinuxMint 19.1 after installing some of the deb files you listed. I play JustCause 3 over Lutris Wine-Steam using Wine 4.0 Staging + Esync + DXVK 0.96 without issues, so i was hoping that with your wine-proton i would be able to kick wine steam and use Steam with proton-wine, but the Game doesn't even launch, so i think it is missing a patch from the staging, but i have no idea which one. As i searched around i saw that Just Cause 3 is using Denuvo and this can only work with wine staging because it has some patches which makes them working. I attached also the log i get using your build.

steam-225540.log

kakra commented 5 years ago

This line looks strange:

0025:err:winediag:wined3d_dll_init Setting maximum allowed wined3d GL version to 0.0.

Do you happen to run the game in the same prefix created by wine-staging? Could you clean the prefix and try again? Note: This may wipe out your saved games.

The prefix is stored in the compatdata folder, in a folder named by the gameid.

I have to check if I have access to a Steam lib having this game to try out myself. If it is really the Denuvo copy protection, I'd probably need to run this locally on my system to figure out which patch is missing.

WernerAUT commented 5 years ago

Hi kakra,

thanks for the reply, do you think it would help if i make also a log from running Just Cause 3 on the working Steam for Windows running inside Wine. Or would it be even better if i would make a full log, not only fixme? Some one over at the proton github said he thinks it is related to proton patches, so i am not sure if it is fixable at all.

https://github.com/ValveSoftware/Proton/issues/682

It doesn't start with a wine 3.19 + staging + dxvk + Proton patches(*), running steam-for-linux, on nvidia.

But it does run fine without Proton patches (so wine + staging + dxvk, at least on nvidia), so with steam installed manually inside wine. (actually the only Proton patch to disable to get it working with steam-in-wine is the load_library's steamclient-lsteamclient swap)

FWIW, my guess is that Proton's lsteamclient is not enough for Just Cause 3: it might be looking for something else in the Steam install (it's not gameoverlay, you can disable it from steam and it still works with steam-in-wine, and I don't the see the "load module gameoverlay" anymore with Proton).

(I did not test without wine-staging)

(*): "Proton patches" as in Proton's wine fork steam hacks and patches

kakra commented 5 years ago

A log comparing to the working version could give me first clues, so it could help. I'm not a core wine developer, so a full log with traces might not help me seeing where the problem is because I don't know much about which values logged in a trace are to be expected. But as the game crashes very early, a full log is probably short enough for a quick investigation, so feel free to post it. I may have time to look into this deeper in the weekend (that's when I get access to another Steam lib via family sharing).

WernerAUT commented 5 years ago

sure no problem i will make a log tonight, also not a big issue if you won't waste time on it, because it runs without issue inside Wine with Steam for Windows, i was just wondering and interested why it really doesn't work even with your updated wine included into proton. Is the wine you include just with some selected staging patches by you, then maybe it really miss only another patch.

pchome commented 5 years ago

Just Cause 3 crashing even w/ wine-proton+staging, at least for me when I tried it earlier.

So the problem somewhere in the Steam client itself (or in Steam.dll, lsteamclient, the patch for lsteamclient, ...).

There are some known problems with different copy protections, and there are some tricks to load failing games, but none of them was applicable to Just Cause 3, e.g.:

Actually I have current fork built w/ all wine-staging patches, but unfortunately Just Cause 3 was uninstalled from my library by one of recent Steam client Beta update.

WernerAUT commented 5 years ago

@pchome do you mean you have a proton based on wine 4.x with all staging patches included? So if you could upload the proton folder somewhere then i could test it out if you want. I started to make backups of my games, i was also affected that after a steam beta update a game was deleted and again downloaded :) I have a backup of Just Cause 3 :)

pchome commented 5 years ago

I have a couple of shell scripts to generate such patch, but I should update them for 4.1 (later).

Here is the patch generated for current branch: 0001-Proton-Staging-4.1.patch.gz

Use $ patch -p1 < /path/to/0001-Proton-Staging-4.1.patch.

WernerAUT commented 5 years ago

i don't use the branch, i only use the released pebruilt ones https://github.com/kakra/wine-proton/releases because i just wanted to test it out if this fixes the Just Cause 3 issue :)

pchome commented 5 years ago

Well, I can't share my build, cause it was built using custom CFLAGS and won't work for you.

:man_shrugging:

WernerAUT commented 5 years ago

Ok thanks @pchome maybe @kakra can use your patch and built one for me :)

kakra commented 5 years ago

I'm currently installing the game, I'll try to reproduce the problem here... No need for logs currently.

kakra commented 5 years ago

I started to make backups of my games, i was also affected that after a steam beta update a game was deleted and again downloaded :)

I do too. But I found that re-downloading here is faster than restoring from backup: 120 MBytes/s download rate ;-)

kakra commented 5 years ago

Well, I can't share my build, cause it was built using custom CFLAGS and won't work for you.

Mine is built with custom flags, too... But for a pretty common combination of CPU features because my platform is somewhat older (Ivy Bridge). If JC3 works for me with my build, I figure we should look into changing CPU flags of my build.

kakra commented 5 years ago

@WernerAUT Okay, crashes for me too, tho I'm not having the d3d warning in the log:

0025:fixme:heap:RtlSetHeapInformation 0x490000 0 0x24e810 4 stub
0025:fixme:debug_buffer:RtlCreateQueryDebugBuffer (0, 0): stub
0025:fixme:debug_buffer:RtlCreateQueryDebugBuffer (168, 0): returning 0x98e90
0025:fixme:debug_buffer:RtlQueryProcessDebugInformation (37, 14, 0x98e90): stub
0025:fixme:debug_buffer:RtlDestroyQueryDebugBuffer (0x98e90): stub
0025:fixme:thread:NtSetInformationThread info class 7 not supported yet
002b:fixme:thread:NtSetInformationThread info class 7 not supported yet
002b:fixme:thread:NtSetInformationThread info class 7 not supported yet
Setting breakpad minidump AppID = 225540
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198086800809 [API loaded no]
pid 23133 != 23132, skipping destruction (fork without exec?)

I'm now trying to figure out which patches are missing. But you probably need to find why you're having the d3d warning about the max GL version = 0.0.

WernerAUT commented 5 years ago

@kakra i think i have the d3d warning because i am testing with the Nvidia 418.30 driver, i wanted to try out freesync with my monitor :) on Linux Mint which is just in a testing repo. I will go back to 415.27 and will retest and look if the log shows something else

kakra commented 5 years ago

@WernerAUT You should use the latest NVIDIA vulkan beta driver to fully support DXVK. I'm using 415.22.05, this actually has more features and extensions related to Vulkan than 415.27, so the older version number is actually the newer version (minus support for GPUs introduced after 415.22).

WernerAUT commented 5 years ago

ok the 418.30 was not the reason, i know about 415.22.05 but i won't use it for now without a ppa were it is available

kakra commented 5 years ago

And okay here: ntdll-NtSetLdtEntries from staging doesn't fix the problem. Still investigating.

kakra commented 5 years ago

@WernerAUT Could you gist a full log of JC3 working in staging?

kakra commented 5 years ago

Ok thanks @pchome maybe @kakra can use your patch and built one for me :)

Sorry, no monolithic patches accepted as outlined in the README. But I'm in for trying to isolate the patches needed to get this running so we can concentrate on getting those specific patches upstreamed. Do you have any hints which patches would be needed? Info on JC3 in wine is very sparse except "use lutris" or "use staging". That's not very helpful if we want to get support for getting it run under Proton.

WernerAUT commented 5 years ago

@kakra attached a full log, i hope correct one :) justcause3_staging.log

pchome commented 5 years ago

@kakra

Sorry, no monolithic patches accepted as outlined in the README.

You can change --backend=git-am in mentioned scripts to get separate commits. --backend=git-apply was good for testing and investigation.

The difference for 4.1:

# Applied! 4.1
SKIP="${SKIP} -W httpapi-HttpCreateServerSession"
SKIP="${SKIP} -W ntdll-Hide_Wine_Exports"
SKIP="${SKIP} -W ntdll-NtContinue"
SKIP="${SKIP} -W ntdll-User_Shared_Data"
SKIP="${SKIP} -W winebuild-Fake_Dlls"
SKIP="${SKIP} -W wined3d-Silence_FIXMEs"
SKIP="${SKIP} -W wined3d-CSMT_Main"
kakra commented 5 years ago

Okay, that's messy because it contains the logs of the steam client itself. Let's try different:

Run Steam with WINEDEBUG=-all but still capture the logs generated as you previously did.

Now, with the Steam client running, please run the game exe directly and also capture the logs:

export WINEDEBUG=fixme+all,+timestamp,+pid,+tid,+seh,+debugstr,+module,+server,+loaddll 
cd /path/to/game/exe
WINEPREFIX=/path/to/prefix wine NameOfGame.exe

I'm not sure if that would work but let's see. One of the captured logs should have logs of the game only, except Steam does something magic and hands over launching of the game back to the running steam client (which, apparently, games sometimes do). I no longer have such a setup (I ditched my WineSteam prefix months ago) but if I remember correctly I was able to capture logs clean of Steam client logs that way.

kakra commented 5 years ago

The difference for 4.1

@pchome All those are in my branch (minus CSMT because wine-4.x should have an inferior implementation and the other is the older one). See https://github.com/kakra/wine-proton/blob/rebase/proton_3.16/docs/patches/staging.yml

Some of those have been cherry-picked from the queue at https://source.winehq.org/patches/ so those are not yet listed there. I'll do that when I'm seeing rebase conflicts.

Current research tells me that concentrating on Denuvo may be a dead end. First glance of the logs @WernerAUT provided more looks like it's another component, probably handling certificates or crypto, or some runtime library stuff. Denuvo compatibility has been proven working for multiple titles meanwhile suspecting Denuvo first, but it turned out to be something else.

kakra commented 5 years ago

BTW: I'm doing this "just cause" I wanted to play it too for some time now :-)

pchome commented 5 years ago

All those are in my branch

Yes, -W mean skip. I'm applied them (Staging-4.1 patches) on top of your branch. "All" w/o "listed".

kakra commented 5 years ago

@pchome Ah okay. I'm not familiar with using the patchapply script from staging (it failed me several times and I gave up). But you seem comfortable with it. Maybe we can join efforts to isolate the required patches. Could you remove all staging patches you applied on top of my branch which are obviously not related to this problem and then try the game (I'm pretending you're owning the game and could run it).

This way we can probably reduce the footprint a lot. Combined with the logs @WernerAUT hopefully will provide, it should be more easy to find what's needed. Thanks.

kakra commented 5 years ago

FWIW, my guess is that Proton's lsteamclient is not enough for Just Cause 3: it might be looking for something else in the Steam install (it's not gameoverlay, you can disable it from steam and it still works with steam-in-wine, and I don't the see the "load module gameoverlay" anymore with Proton).

@WernerAUT I don't expect any of the Steam client requirements have something to do with it. There's another couple of patches you might want to remove: The patches replacing the Linux user name with "steamuser" so that the profile path is the same, no matter how your user is named. I think this is needed for the cloud sync to work correctly, and for when you restored your library from a backup but to a different user. It gets messy if you run the same prefix with alternating wine implementations (Proton vs non-Proton) because you end up with two user profiles in the prefix.

But other than that, we need to isolate the patches missing from my branch but existing in staging, or more exactly: we need to isolate the specific missing patches in that set of patches. Staging is a lot of patches, I really do not want to carry around all of these during rebase. It will backfire hard once Proton upstream rebases to a newer wine base version (I did that once, don't want to repeat that, that's when I threw away a lot of patches to carry around).

Also, just applying all staging and "then it works" doesn't help anyone to get it upstream (either in Proton, or even in winehq upstream). Please do not read as critique, I just wanted to explain my reasoning why I'm picky about which patches to accept. :-)

pchome commented 5 years ago

@kakra

Could you remove all staging patches you applied on top of my branch which are obviously not related to this problem and then try the game

Before isolating specific patch we need to launch the game with success. Then, for sure, I'll help you to isolate some patches. So for testing purposes you can apply attached monolithic patch on your local testing build.

Also, it maybe worth to look close into following patches:

kernel32: Don't force-load Steam.dll
HACK: kernel32: Load hard-coded Steam.dll path if relative load fails
HACK: kernel32: Return steamclient instead of lsteamclient during GetModuleHandleEx
HACK: kernel32: Swap requests for steamclient.dll with lsteamclient

Maybe add some additional traces to figure out why (if it should) Steam.dll wasn't loaded.

I'm pretending you're owning the game and could run it

I need to free some additional disk space and re-download the game. I'll do it later.

WernerAUT commented 5 years ago

@kakra no that didn't work, for sure because i installed it using Lutris, maybe you can see in this log more, i started Lutris in debug mode lutris_debug.log

kakra commented 5 years ago

@pchome Is it easily possible for you to apply the patches with git-am instead? Then create a pseudo-monolithic patch with git format-patch --stdout tag-before-applying > jc3-testing.patch (or push that branch)? This will result in a single file similar to your monolithic patch but it still tracks the individual commits. That way I filter-out unrelated patches and bisect the remainders.

kakra commented 5 years ago

no that didn't work, for sure because i installed it using Lutris, maybe you can see in this log more, i started Lutris in debug mode lutris_debug.log

@WernerAUT It's more or less the same with added Lutris noise. Can you tell Lutris to use different WINEDEBUG settings, as posted above?

I'm not sure if you could easily compile yourself for running wine in Lutris, but just in case here's a patch which should silence these "useless" ThreadInfo logs: https://gist.github.com/kakra/aa2819fd7394a27700cff3694a04d59c

pchome commented 5 years ago

If you need the list: jc3-testing.list.txt Use $ grep '^Applying ' jc3-testing.list.txt | grep -o -E '/patches/[^/]+' | sort | uniq for compact list.

As requested: jc3-testing.patch.gz

pchome commented 5 years ago

BTW: I have Deus Ex: MD installed, which have similar issue. Staging patches applied to wine-proton don't help.

pcgamingwiki.com:games using Denuvo Anti-Tamper DRM

kakra commented 5 years ago

Deux Ex: MD has a native Linux version, I completed the game without issues and started one DLC (not yet completed). Thanks for the logs/patches/links. I'm looking into it right now.

kakra commented 5 years ago

pcgamingwiki.com:games using Denuvo Anti-Tamper DRM

This lists a few games that I'm successfully playing with my branch... This hardens the idea that Denuvo is not the problem.

kakra commented 5 years ago

Okay, I've added the following patches which are documented to solve problems with anti-tamper/anti-cheat implementations (mostly around Leage of Legends):

advapi32-CreateRestrictedToken server-Misc_ACL Staging:
  advapi32-Token_Integrity_Level:
    ntdll-LdrInitializeThunk:
      ntdll-RtlCreateUserThread: []
Compiler_Warnings:
  dxva2-Video_Decoder ntoskrnl-Stubs:
      winedevice-Default_Drivers: []
wow64cpu-Wow64Transition: []

JC3 still fails in the same way, so this list is either incomplete or that's the wrong track.

@pchome I'll diff that against your list later and try another set of patches. But now: Time to go to bed. ;-)

kakra commented 5 years ago

Could you check if this version fixes any games for you? It includes a current pull from wine-master plus all staging patches related to anti-tamper/anti-cheat modules: https://cloudflare-ipfs.com/ipfs/QmXop5HhKZTM5pnYRyNuQTRKZb5w91KrhAu9HHC9nbUh8S

Please do not share the link in other forums as it is a crypto-link and I cannot change it except remove it.

It doesn't fix JC3 for me, but maybe some of the other games with similar problems.

Output from tools/mkpatchlist.rb:

# expanded from patches/Compiler_Warnings/*.patch
patches/Compiler_Warnings/0001-windowscodecs-Avoid-implicit-cast-of-interface-point.patch
patches/Compiler_Warnings/0020-amstream-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0021-d2d1-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0022-d3d11-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0023-d3d8-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0024-d3d9-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0025-ddraw-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0026-dwrite-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0027-msxml3-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0028-oleaut32-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0029-rpcrt4-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0030-vbscript-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0031-include-Check-element-type-in-CONTAINING_RECORD-and-.patch
patches/Compiler_Warnings/0032-wsdapi-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0033-evr-Avoid-implicit-cast-of-interface-pointer.patch

# expanded from patches/dxva2-Video_Decoder/*.patch
# Fixes: Support for MPEG2 DXVA2 GPU video decoding through vaapi
# Fixes: Support for H264 DXVA2 GPU video decoding through vaapi
patches/dxva2-Video_Decoder/0001-dxva2-Implement-semi-stub-for-Direct3DDeviceManager9.patch
patches/dxva2-Video_Decoder/0002-dxva2-Implement-stubbed-interfaces-for-IDirectXVideo.patch
patches/dxva2-Video_Decoder/0004-dxva2-Implement-stubbed-DirectX-Software-VideoProces.patch
patches/dxva2-Video_Decoder/0005-include-Add-dxva.h-header-file.patch
patches/dxva2-Video_Decoder/0006-dxva2-tests-Add-tests-for-dxva2-decoder.patch
patches/dxva2-Video_Decoder/0007-dxva2-Initial-implementation-of-MPEG2-decoder-using-.patch
patches/dxva2-Video_Decoder/0008-dxva2-Implement-h264-decoder.patch
patches/dxva2-Video_Decoder/0009-dxva2-Add-DRM-mode-for-vaapi.patch
patches/dxva2-Video_Decoder/0010-dxva2-Fill-h264-luma-and-chroma-weights-offsets-with.patch
patches/dxva2-Video_Decoder/0011-dxva2-Always-destroy-buffers-when-calling-vaRenderPi.patch
patches/dxva2-Video_Decoder/0012-dxva2-Only-declare-debug-channels-when-they-are-actu.patch

# expanded from patches/ntoskrnl-Stubs/*.patch
# Fixes: Add stub for ntoskrnl.Mm{Map,Unmap}LockedPages
# Fixes: Add stub for ntoskrnl.IoGetDeviceAttachmentBaseRef
# Fixes: Implement ntoskrnl.NtBuildNumber
patches/ntoskrnl-Stubs/0009-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch
patches/ntoskrnl-Stubs/0011-ntoskrnl.exe-Add-IoGetDeviceAttachmentBaseRef-stub.patch
patches/ntoskrnl-Stubs/0013-ntoskrnl.exe-Implement-NtBuildNumber.patch

# expanded from patches/winedevice-Default_Drivers/*.patch
# Fixes: Simulate a more realistic kernel environment in ntoskrnl/winedevice
# Depends: dxva2-Video_Decoder
# Depends: ntoskrnl-Stubs
patches/winedevice-Default_Drivers/0001-win32k.sys-Add-stub-driver.patch
patches/winedevice-Default_Drivers/0002-dxgkrnl.sys-Add-stub-driver.patch
patches/winedevice-Default_Drivers/0003-dxgmms1.sys-Add-stub-driver.patch
patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch

# expanded from patches/advapi32-CreateRestrictedToken/*.patch
# Fixes: [25834] Implement advapi32.CreateRestrictedToken
patches/advapi32-CreateRestrictedToken/0001-ntdll-Implement-NtFilterToken.patch
patches/advapi32-CreateRestrictedToken/0002-advapi32-Implement-CreateRestrictedToken.patch
patches/advapi32-CreateRestrictedToken/0003-server-Correctly-validate-SID-length-in-sd_is_valid.patch

# expanded from patches/server-Misc_ACL/*.patch
# Fixes: [15980] GetSecurityInfo returns NULL DACL for process object
patches/server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch
patches/server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch

# expanded from patches/Staging/*.patch
patches/Staging/0001-kernel32-Add-winediag-message-to-show-warning-that-t.patch
patches/Staging/0002-winelib-Append-Staging-at-the-end-of-the-version-s.patch
patches/Staging/0003-loader-Add-commandline-option-patches-to-show-the-pa.patch
patches/Staging/0004-loader-Add-commandline-option-check-libs.patch
patches/Staging/0005-loader-Print-library-paths-for-check-libs-on-Mac-OS-.patch

# expanded from patches/advapi32-Token_Integrity_Level/*.patch
# Fixes: [40613] Basic implementation for token integrity levels and UAC handling
# Fixes: [39262] Run explorer.exe as unevaluated process
# Depends: advapi32-CreateRestrictedToken
# Depends: server-Misc_ACL
# Depends: Staging
patches/advapi32-Token_Integrity_Level/0001-advapi32-tests-Extend-security-label-token-integrity.patch
patches/advapi32-Token_Integrity_Level/0002-server-Implement-token-elevation-information.patch
patches/advapi32-Token_Integrity_Level/0003-server-Correctly-treat-zero-access-mask-in-duplicate.patch
patches/advapi32-Token_Integrity_Level/0004-server-Implement-token-integrity-level.patch
patches/advapi32-Token_Integrity_Level/0005-server-Use-all-group-attributes-in-create_token.patch
patches/advapi32-Token_Integrity_Level/0006-ntdll-Add-function-to-create-new-tokens-for-elevatio.patch
patches/advapi32-Token_Integrity_Level/0007-shell32-Implement-process-elevation-using-runas-verb.patch
patches/advapi32-Token_Integrity_Level/0008-ntdll-Implement-process-token-elevation-through-mani.patch
patches/advapi32-Token_Integrity_Level/0010-server-Implement-support-for-creating-processes-usin.patch
patches/advapi32-Token_Integrity_Level/0012-user32-Start-explorer.exe-using-limited-rights.patch
patches/advapi32-Token_Integrity_Level/0013-server-Correctly-assign-security-labels-for-tokens.patch
patches/advapi32-Token_Integrity_Level/0014-programs-runas-Basic-implementation-for-starting-pro.patch
patches/advapi32-Token_Integrity_Level/0015-ntdll-Add-semi-stub-for-TokenLinkedToken-info-class.patch

# expanded from patches/ntdll-LdrInitializeThunk/*.patch
# Fixes: [45570] League of Legends 8.12+ fails to start a game (anticheat engine, incorrect implementation of LdrInitializeThunk)
# Depends: advapi32-Token_Integrity_Level
patches/ntdll-LdrInitializeThunk/0001-ntdll-Refactor-LdrInitializeThunk.patch

# expanded from patches/ntdll-RtlCreateUserThread/*.patch
# Fixes: [45571] League of Legends 8.12+ fails to start a game (anticheat engine, hooking of NtCreateThread/Ex)
# Depends: ntdll-LdrInitializeThunk
patches/ntdll-RtlCreateUserThread/0001-ntdll-Refactor-RtlCreateUserThread-into-NtCreateThre.patch

# expanded from patches/api-ms-win-Stub_DLLs/*.patch
# Fixes: Add ext-ms-win-xaml-pal-l1-1-0 dll and XamlBehaviourEnabled() stub
# Fixes: Add ext-ms-win-xaml-pal-l1-1-0.GetThemeServices() stub
# Fixes: Add ext-ms-win-appmodel-usercontext-l1-1-0 dll and UserContextExtInitialize() stub
# Fixes: Add iertutil dll
# Fixes: Return dummy interface in some uiautomationcore functions
patches/api-ms-win-Stub_DLLs/0006-iertutil-Add-dll-and-add-stub-for-ordinal-811.patch
patches/api-ms-win-Stub_DLLs/0009-ext-ms-win-xaml-pal-l1-1-0-Add-dll-and-add-stub-for-.patch
patches/api-ms-win-Stub_DLLs/0010-ext-ms-win-appmodel-usercontext-l1-1-0-Add-dll-and-a.patch
patches/api-ms-win-Stub_DLLs/0012-ext-ms-win-xaml-pal-l1-1-0-Add-stub-for-GetThemeServ.patch
patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch

# expanded from patches/kernel32-Processor_Group/*.patch
# Fixes: Implement some processor group functions and SetThreadIdealProcessorEx
# Depends: api-ms-win-Stub_DLLs
patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch
patches/kernel32-Processor_Group/0002-kernel32-Add-stub-for-SetThreadIdealProcessorEx.patch

# expanded from patches/d3d9-DesktopWindow/*.patch
# Fixes: [18490] Allow to set pixel format for desktop window
patches/d3d9-DesktopWindow/0001-winex11.drv-Allow-changing-the-opengl-pixel-format-o.patch

# expanded from patches/ddraw-Rendering_Targets/*.patch
# Fixes: [34906] Use video memory for rendering targets if possible
patches/ddraw-Rendering_Targets/0001-ddraw-Create-rendering-targets-in-video-memory-if-po.patch

# expanded from patches/ddraw-Silence_FIXMEs/*.patch
patches/ddraw-Silence_FIXMEs/0001-ddraw-Silence-noisy-FIXME-about-unimplemented-D3DPRO.patch

# expanded from patches/dinput-Deadlock/*.patch
# Fixes: [43356] Avoid possible deadlock in dinput when CS are acquired in different order
patches/dinput-Deadlock/0001-dinput-Avoid-possible-deadlock-when-CS-are-acquired-.patch

# expanded from patches/dsound-Fast_Mixer/*.patch
# Fixes: [30639] Audio stuttering and performance drops in multiple applications
patches/dsound-Fast_Mixer/0001-dsound-Add-a-linear-resampler-for-use-with-a-large-n.patch

# expanded from patches/gdi32-Lazy_Font_Initialization/*.patch
# Fixes: Improve startup performance by delaying font initialization
# 
patches/gdi32-Lazy_Font_Initialization/0001-gdi32-Perform-lazy-initialization-of-fonts-to-improv.patch

# expanded from patches/gdi32-MultiMonitor/*.patch
# Fixes: [34978] Multiple applications need EnumDisplayDevicesW implementation
# Fixes: [37709] GetMonitorInfo returns the same name for all monitors
# Fixes: [41258] Return a more reasonable display DeviceID
patches/gdi32-MultiMonitor/0001-gdi32-Also-accept-.-DISPLAY-n-devices-names-with-n-o.patch
patches/gdi32-MultiMonitor/0002-winex11-Make-GetMonitorInfo-give-a-different-device-.patch
patches/gdi32-MultiMonitor/0003-user32-Implement-EnumDisplayDevicesW-based-on-EnumDi.patch
patches/gdi32-MultiMonitor/0004-winemac-Make-GetMonitorInfo-give-a-different-device-.patch
patches/gdi32-MultiMonitor/0005-user32-Return-a-more-reasonable-display-DeviceID.patch

# expanded from patches/gdiplus-Performance-Improvements/*.patch
# Fixes: Improve performance of bilinear bitmap scaling
patches/gdiplus-Performance-Improvements/0001-gdiplus-Change-the-order-of-x-y-loops-in-the-scaler.patch
patches/gdiplus-Performance-Improvements/0002-gdiplus-Change-multiplications-by-additions-in-the-x.patch
patches/gdiplus-Performance-Improvements/0003-gdiplus-Remove-ceilf-floorf-calls-from-bilinear-scal.patch
patches/gdiplus-Performance-Improvements/0004-gdiplus-Prefer-using-pre-multiplied-ARGB-data-in-the.patch

# expanded from patches/iphlpapi-System_Ping/*.patch
# Fixes: [8332] Fallback to system ping command when CAP_NET_RAW is not available
patches/iphlpapi-System_Ping/0001-iphlpapi-Fallback-to-system-ping-when-ICMP-permissio.patch

# expanded from patches/kernel32-K32GetPerformanceInfo/*.patch
# Fixes: Use separate wineserver call for kernel32.K32GetPerformanceInfo
patches/kernel32-K32GetPerformanceInfo/0001-kernel32-Make-K32GetPerformanceInfo-faster.patch

# expanded from patches/kernel32-NormalizeString/*.patch
# Fixes: [42734] Implement NormalizeString
patches/kernel32-NormalizeString/0001-tools-make_unicode-Implement-full-Unicode-character-.patch
patches/kernel32-NormalizeString/0002-tools-make_unicode-Implement-canonical-composition-f.patch
patches/kernel32-NormalizeString/0003-kernel32-Implement-NormalizeString-API-function.patch
patches/kernel32-NormalizeString/0004-libs-Generated-make_unicode-files.patch

# expanded from patches/libs-Unicode_Collation/*.patch
# Fixes: [10767] Fix comparison of punctuation characters in lstrcmp
# Fixes: [32490] Graphical issues in Inquisitor
# Depends: kernel32-NormalizeString
patches/libs-Unicode_Collation/0001-libs-Fix-most-problems-with-CompareString.patch

# expanded from patches/kernel32-SCSI_Sysfs/*.patch
# Fixes: [31592] Use sysfs to populate SCSI registry keys
patches/kernel32-SCSI_Sysfs/0001-kernel32-Convert-scsi-device-type-in-SCSI_getprocent.patch
patches/kernel32-SCSI_Sysfs/0002-kernel32-Add-support-for-reading-scsi-devices-from-s.patch

# expanded from patches/ntdll-APC_Performance/*.patch
patches/ntdll-APC_Performance/0001-ntdll-Reuse-old-async-fileio-structures-if-possible.patch

# expanded from patches/ntdll-CriticalSection/*.patch
patches/ntdll-CriticalSection/0001-include-Move-interlocked_inc-dec-to-port.h.patch
patches/ntdll-CriticalSection/0002-ntdll-Add-inline-versions-of-RtlEnterCriticalSection.patch
patches/ntdll-CriticalSection/0003-ntdll-Use-fast-CS-functions-for-heap-locking.patch
patches/ntdll-CriticalSection/0004-ntdll-Use-fast-CS-functions-for-threadpool-locking.patch

# expanded from patches/ntdll-NtSetLdtEntries/*.patch
patches/ntdll-NtSetLdtEntries/0001-ntdll-Implement-NtSetLdtEntries.patch
patches/ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch

# expanded from patches/ntdll-ThreadTime/*.patch
# Fixes: [20230] Return correct values for GetThreadTimes function
# Fixes: Return correct thread creation time in SystemProcessInformation
# Fixes: Fill process virtual memory counters in NtQuerySystemInformation
patches/ntdll-ThreadTime/0001-ntdll-Return-correct-values-in-GetThreadTimes-for-al.patch
patches/ntdll-ThreadTime/0002-ntdll-Set-correct-thread-creation-time-for-SystemPro.patch
patches/ntdll-ThreadTime/0003-ntdll-Fill-process-kernel-and-user-time.patch
patches/ntdll-ThreadTime/0004-ntdll-Set-process-start-time.patch
patches/ntdll-ThreadTime/0005-ntdll-Fill-out-thread-times-in-process-enumeration.patch
patches/ntdll-ThreadTime/0006-ntdll-Fill-process-virtual-memory-counters-in-NtQuer.patch

# expanded from patches/server-Realtime_Priority/*.patch
# Fixes: Support for linux priority levels for faster performance
# Depends: ntdll-ThreadTime
patches/server-Realtime_Priority/0001-wineserver-Draft-to-implement-priority-levels-throug.patch

# expanded from patches/ntdll-HideWineExports/*.patch

# expanded from patches/ntdll-UserSharedData/*.patch

# expanded from patches/winebuild-FakeDLLs/*.patch

# expanded from patches/ntdll-NtContinue/*.patch
# Fixes: [31910] Add stub for NtContinue
# Fixes: [45572] League of Legends 8.12+ fails to start a game (anticheat engine, hooking of NtContinue)
# Depends: winebuild-Fake_Dlls
patches/ntdll-NtContinue/0001-ntdll-Add-stub-for-NtContinue.patch
patches/ntdll-NtContinue/0002-Use-NtContinue-to-continue-execution-after-exception.patch

# expanded from patches/ntdll-Threading/*.patch
# Fixes: Fix race-condition when threads are killed during shutdown
patches/ntdll-Threading/0001-ntdll-Fix-race-condition-when-threads-are-killed-dur.patch

# expanded from patches/ntdll-Wait_User_APC/*.patch
# Fixes: [14697] Do not allow interruption of system APC in server_select
patches/ntdll-Wait_User_APC/0001-ntdll-Block-signals-while-executing-system-APCs.patch

# expanded from patches/server-Key_State/*.patch
# Fixes: [31899] Implement locking and synchronization of key states
# Fixes: [35907] Fix caps lock state issues with multiple processes
patches/server-Key_State/0001-server-Introduce-a-helper-function-to-update-the-thr.patch
patches/server-Key_State/0002-server-Implement-locking-and-synchronization-of-keys.patch

# expanded from patches/server-PeekMessage/*.patch
# Fixes: [28884] GetMessage should remove already seen messages with higher priority
patches/server-PeekMessage/0001-server-Fix-handling-of-GetMessage-after-previous-Pee.patch

# expanded from patches/server-ClipCursor/*.patch
# Fixes: [38791] Fix handling of cursor position clipping
patches/server-ClipCursor/0001-server-Fix-handling-of-cursor-position-clipping.patch

# expanded from patches/server-Signal_Thread/*.patch
# Fixes: Do not signal threads until they are really gone
patches/server-Signal_Thread/0001-server-Do-not-signal-thread-until-it-is-really-gone.patch

# expanded from patches/server-Shared_Memory/*.patch
# Depends: ntdll-Threading
# Depends: ntdll-Wait_User_APC
# Depends: server-Key_State
# Depends: server-PeekMessage
# Depends: server-ClipCursor
# Depends: server-Signal_Thread
patches/server-Shared_Memory/0001-ntdll-Implement-virtual_map_shared_memory.patch
patches/server-Shared_Memory/0002-server-Implement-support-for-global-and-local-shared.patch
patches/server-Shared_Memory/0003-user32-Get-rid-of-wineserver-call-for-GetInputState.patch
patches/server-Shared_Memory/0004-user32-Avoid-unnecessary-wineserver-calls-in-PeekMes.patch
patches/server-Shared_Memory/0005-user32-Get-rid-of-wineserver-call-for-GetLastInputIn.patch
patches/server-Shared_Memory/0006-ntdll-Only-enable-wineserver-shared-memory-communica.patch
patches/server-Shared_Memory/0007-server-Store-a-list-of-associated-queues-for-each-th.patch
patches/server-Shared_Memory/0008-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch
patches/server-Shared_Memory/xxx9-user32-Cache-the-result-of-GetForegroundWindow.patch

# expanded from patches/setupapi-Display_Device/*.patch
# Fixes: [35345] Fix enumeration of display driver properties using setupapi
patches/setupapi-Display_Device/0001-setupapi-Create-registry-keys-for-display-devices-an.patch
patches/setupapi-Display_Device/0002-setupapi-Handle-the-case-that-a-full-driver-path-is-.patch
patches/setupapi-Display_Device/0003-setupapi-Also-create-HardwareId-registry-key-for-dis.patch

# expanded from patches/shell32-IconCache/*.patch
# Fixes: [45696] shell32: Generate icons from available icons if required.
patches/shell32-IconCache/0001-shell32-iconcache-Generate-icons-from-available-icons-.patch

# expanded from patches/user32-minimized_windows/*.patch
# Fixes: [7287] Redundant "tabs" appear with tabbed MDI (test with LTSpice)
patches/user32-minimized_windows/0001-user32-tests-Add-tests-for-GetWindowPlacement-and-Se.patch
patches/user32-minimized_windows/0002-user32-SetWindowPos-shouldn-t-change-the-client-rect.patch
patches/user32-minimized_windows/0003-user32-Correctly-calculate-the-client-size-of-a-mini.patch
patches/user32-minimized_windows/0004-user32-Use-the-C-XY-MINIMIZED-rather-than-C-XY-ICON-.patch
patches/user32-minimized_windows/0005-user32-AdjustWindowRect-shouldn-t-ignore-WS_MINIMIZE.patch
patches/user32-minimized_windows/0006-user32-tests-Add-tests-for-maximizing-and-minimizing.patch
patches/user32-minimized_windows/0007-user32-tests-Add-tests-for-maximizing-and-minimizing.patch
patches/user32-minimized_windows/0008-user32-tests-Add-tests-for-maximizing-and-minimizing.patch
patches/user32-minimized_windows/0009-user32-tests-Add-tests-for-ArrangeIconicWindows.patch
patches/user32-minimized_windows/0010-user32-Reimplement-ArrangeIconicWindows-using-minimi.patch
patches/user32-minimized_windows/0011-user32-Correctly-place-minimized-windows.patch
patches/user32-minimized_windows/0012-user32-Paint-title-bars-for-minimized-windows.patch
patches/user32-minimized_windows/0013-user32-Allow-clicking-the-restore-and-maximize-boxes.patch
patches/user32-minimized_windows/0014-user32-Get-rid-of-icon-titles.patch
patches/user32-minimized_windows/0015-user32-Move-iconic-windows-as-their-border-instead-o.patch

# expanded from patches/windowscodecs-GIF_Encoder/*.patch
# Fixes: Add initial implementation of GIF encoder to windowscodecs
patches/windowscodecs-GIF_Encoder/0007-windowscodecs-tests-Add-IWICBitmapEncoderInfo-test.patch
patches/windowscodecs-GIF_Encoder/0008-windowscodecs-Add-initial-implementation-of-the-GIF-.patch
patches/windowscodecs-GIF_Encoder/0010-windowscodecs-Initialize-empty-property-bag-in-GIF-e.patch
patches/windowscodecs-GIF_Encoder/0020-windowscodecs-Add-registration-of-the-GIF-encoder.patch
patches/windowscodecs-GIF_Encoder/0021-windowscodecs-Fix-IWICBitmapDecoder-CopyPalette-for-.patch
patches/windowscodecs-GIF_Encoder/0022-windowscodecs-Better-follow-the-GIF-spec-and-don-t-s.patch
patches/windowscodecs-GIF_Encoder/0026-windowscodecs-tests-Add-the-tests-for-GIF-encoder-an.patch
patches/windowscodecs-GIF_Encoder/0028-windowscodecs-Correctly-indicate-that-the-global-inf.patch

# expanded from patches/windowscodecs-IWICPalette_InitializeFromBitmap/*.patch

# expanded from patches/windowscodecs-TIFF_Support/*.patch
# Fixes: Improve TIFF support in windowscodecs.dll
# Depends: windowscodecs-GIF_Encoder
# 
patches/windowscodecs-TIFF_Support/0001-windowscodecs-tests-Add-a-test-for-8bpp-indexed-TIFF.patch
patches/windowscodecs-TIFF_Support/0002-windowscodecs-tests-Make-the-test-for-8bpp-indexed-T.patch
patches/windowscodecs-TIFF_Support/0003-windowscodecs-Fix-the-SupportsTransparency-flag-valu.patch
patches/windowscodecs-TIFF_Support/0004-windowscodecs-Fail-earlier-in-TIFF-decoder-s-Initial.patch
patches/windowscodecs-TIFF_Support/0005-windowscodecs-Avoid-redundant-checks-when-reading-a-.patch
patches/windowscodecs-TIFF_Support/0006-windowscodecs-Add-support-for-16bppGray-and-32bppGra.patch
patches/windowscodecs-TIFF_Support/0007-windowscodecs-Add-support-for-3bps-RGB-format-to-TIF.patch
patches/windowscodecs-TIFF_Support/0008-windowscodecs-Add-support-for-12bpp-RGB-format-to-TI.patch
patches/windowscodecs-TIFF_Support/0009-windowscodecs-Add-support-for-128bppRGBAFloat-format.patch
patches/windowscodecs-TIFF_Support/0011-windowscodecs-Add-support-for-32bppCMYK-and-64bppCMY.patch
patches/windowscodecs-TIFF_Support/0012-windowscodecs-Add-support-for-4bpp-RGBA-format-to-TI.patch
patches/windowscodecs-TIFF_Support/0013-windowscodecs-Add-support-for-16bpp-RGBA-format-to-T.patch
patches/windowscodecs-TIFF_Support/0014-windowscodecs-Add-some-tests-for-various-TIFF-color-.patch
patches/windowscodecs-TIFF_Support/0015-windowscodecs-Tolerate-partial-reads-in-the-IFD-meta.patch
patches/windowscodecs-TIFF_Support/0016-gdiplus-Add-support-for-more-image-color-formats.patch
patches/windowscodecs-TIFF_Support/0017-gdiplus-tests-Add-some-tests-for-loading-TIFF-images.patch

# expanded from patches/windowscodecs-32bppPRGBA/*.patch
# Fixes: Implement support for 32bppRGB, 32bppRGBA and 32bppPRGBA in format converter
# Depends: windowscodecs-TIFF_Support
patches/windowscodecs-32bppPRGBA/0001-windowscodecs-Add-support-for-32bppRGB-32bppRGBA-and.patch
patches/windowscodecs-32bppPRGBA/0002-windowscodecs-Fix-32bppRGB-to-32bppRGBA-conversion.patch

# expanded from patches/wined3d-Accounting/*.patch
# Fixes: Use NVX_GPU_MEMORY_INFO extension for more exact video memory accounting on NVIDIA graphic cards
patches/wined3d-Accounting/0001-wined3d-Use-real-values-for-memory-accounting-on-NVI.patch

# expanded from patches/wined3d-WINED3D_RS_COLORWRITEENABLE/*.patch
# Fixes: Implement support for all d3d11 color write masks in wined3d
patches/wined3d-WINED3D_RS_COLORWRITEENABLE/0001-wined3d-Implement-all-8-d3d11-color-write-masks.patch

# expanded from patches/wined3d-Indexed_Vertex_Blending/*.patch
# Fixes: [39057] Support for indexed vertex blending
# Depends: wined3d-WINED3D_RS_COLORWRITEENABLE
patches/wined3d-Indexed_Vertex_Blending/0001-d3d9-tests-Add-test-for-indexed-vertex-blending.patch
patches/wined3d-Indexed_Vertex_Blending/0002-wined3d-Implement-hardware-indexed-vertex-blending-w.patch
patches/wined3d-Indexed_Vertex_Blending/0003-d3d9-tests-Test-normal-calculation-when-indexed-vert.patch
patches/wined3d-Indexed_Vertex_Blending/0004-wined3d-Fix-calculation-of-normal-when-vertex-blendi.patch
patches/wined3d-Indexed_Vertex_Blending/0005-wined3d-Move-matrix-inversion-functions-into-utils.c.patch
patches/wined3d-Indexed_Vertex_Blending/0006-wined3d-Implement-software-processing-for-indexed-ve.patch
patches/wined3d-Indexed_Vertex_Blending/0007-d3d9-tests-Check-MaxVertexBlendMatrixIndex-capabilit.patch
patches/wined3d-Indexed_Vertex_Blending/0008-wined3d-Report-correct-number-of-blend-matrices-when.patch
patches/wined3d-Indexed_Vertex_Blending/0009-wined3d-Track-updates-of-vertex-blend-matrices-separ.patch

# expanded from patches/wined3d-WINED3D_TEXF_ANISOTROPIC/*.patch
# Fixes: [41929] wined3d: Multiple games need WINED3D_TEXF_ANISOTROPIC filter mode
patches/wined3d-WINED3D_TEXF_ANISOTROPIC/0001-wined3d-Multiple-games-need-WINED3D_TEXF_ANISOTROPIC.patch

# expanded from patches/wined3d-WINED3DFMT_B8G8R8X8_UNORM/*.patch
# Fixes: [44888] Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion
patches/wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch

# expanded from patches/wined3d-DXTn/*.patch
# Fixes: [25486] Lego Stunt Rally requires DXTn software de/encoding support
# Fixes: [29586] Tumblebugs 2 requires DXTn software encoding support
# Fixes: [17913] Port Royale doesn't display ocean correctly
# Depends: wined3d-WINED3DFMT_B8G8R8X8_UNORM
patches/wined3d-DXTn/0001-wined3d-add-DXTn-support.patch

# expanded from patches/d3dx9_36-DXTn/*.patch
# Depends: wined3d-DXTn
# Fixes: [33768] Fix texture corruption in CSI: Fatal Conspiracy
# Fixes: [37391] Exception during start of fr-043 caused by missing DXTn support
# Fixes: [34692] Fix wrong colors in Wolfenstein (2009)
# Fixes: [24983] Fix crash in Space Rangers2 caused by missing DXTn support
patches/d3dx9_36-DXTn/0001-d3dx9_36-Add-dxtn-support.patch

# expanded from patches/winepulse-PulseAudio_Support/*.patch
# Fixes: Allow selection of audio device for PulseAudio backend
# Fixes: [37042] Implement exclusive mode in PulseAudio backend
# Fixes: Fix possible segfault in pulse_rd_loop of PulseAudio backend
# Fixes: Add support for GetPropValue to PulseAudio backend
# Fixes: Use actual program name if available to describe PulseAudio streams
# Fixes: Expose PKEY_AudioEndpoint_PhysicalSpeakers device property in PulseAudio driver
# Fixes: [28282] Sound constantly crackling in a lot of games
patches/winepulse-PulseAudio_Support/0001-winepulse.drv-Use-a-separate-mainloop-and-ctx-for-pu.patch
patches/winepulse-PulseAudio_Support/0002-winepulse-Don-t-rely-on-pulseaudio-callbacks-for-tim.patch
patches/winepulse-PulseAudio_Support/0003-winepulse-expose-audio-devices-directly-to-programs.patch
patches/winepulse-PulseAudio_Support/0004-winepulse-fix-segfault-in-pulse_rd_loop.patch
patches/winepulse-PulseAudio_Support/0005-winepulse-implement-GetPropValue.patch
patches/winepulse-PulseAudio_Support/0006-winepulse-fetch-actual-program-name-if-possible.patch
patches/winepulse-PulseAudio_Support/0007-winepulse-return-PKEY_AudioEndpoint_PhysicalSpeakers.patch
patches/winepulse-PulseAudio_Support/0008-winepulse-Fix-up-recording.patch
patches/winepulse-PulseAudio_Support/0009-winepulse.drv-Fix-getting-the-same-timing-info.patch
patches/winepulse-PulseAudio_Support/0010-winepulse-Update-last-time-on-underrun.patch
patches/winepulse-PulseAudio_Support/0011-winepulse-account-for-PA-devices-that-fall-way-behin.patch
patches/winepulse-PulseAudio_Support/0012-winepulse-Fix-local-buffer-offset-wrapping.patch
patches/winepulse-PulseAudio_Support/0013-winepulse-Don-t-fake-being-one-period-behind-in-GetP.patch

# expanded from patches/wow64cpu-Wow64Transition/*.patch
# Fixes: [45567] League of Legends 8.12+ fails to start a game (anticheat engine, validation of WoW64 syscall dispatcher)
patches/wow64cpu-Wow64Transition/0001-wow64cpu-Add-stub-dll.patch
patches/wow64cpu-Wow64Transition/0002-ntdll-Add-a-stub-implementation-of-Wow64Transition.patch

# expanded from patches/ws2_32-APC_Performance/*.patch
patches/ws2_32-APC_Performance/0001-ws2_32-Reuse-old-async-ws2_async_io-structures-if-po.patch
WernerAUT commented 5 years ago

sorry i have no other Denuvo protected games, so can't help here :(

WernerAUT commented 5 years ago

just for your info since i used your build and played some of my games, i found out that with this test build controller controll is weird, i tried rocket league (i know its also available as native) and with your test build i can't turn right only left works, going back to your last official build and everything works normal again.

I use a Xbox One Controller connected over bluetooth using xpadneo driver.

pchome commented 5 years ago

I started to check if a failure affected by steamuser, by building standalone WINE tests and comparing wine-proton-3.16 vs wine-staging-4.0.

The most noticeable difference so far:

+security.c:3030: Test failed: duplicating handle should have failed with STATUS_ACCESS_DENIED, instead of err:-559038737
+security.c:3038: Test failed: OpenProcess(PROCESS_VM_READ) should have failed
+security.c:3041: Test failed: OpenProcess(PROCESS_ALL_ACCESS) should have failed
...
+security.c:4746: Test failed: Current User ACE (S-1-5-18) != Current User SID (S-1-5-21-0-0-0-1000).
+security.c:4758: Test failed: Administators Group ACE (S-1-5-21-0-0-0-1000) != Administators Group SID (S-1-5-32-544).
+security.c:5136: Test failed: not a member
+security.c:5151: Test failed: got wrong attributes
+security.c:5153: Test failed: got wrong attributes

$ diff -u test-advapi32-security.exe.txt test-advapi32-security.exe.proton.txt

Sources and prebuilt binary: proton-secur-tests-64.tar.gz ($ sh tests-init.sh to init sources)

@kakra If it makes any sense -- you could test your build. I also looking into other related tests (which uses GetUserName).

Additional thoughts:

kakra commented 5 years ago

@WernerAUT Using xpadneo here, too. AFAIR, wine upstream changed controller axis mapping from signed (-32768..32767) to unsigned (0..65535) as that matches what Windows uses (https://github.com/wine-mirror/wine/commit/b16fb11890b59a80816d6906e7b7b4ce52f88555). xpadneo had a similar change lately. Maybe this interferes with each other somehow?

You could try switching xpadneo between both modes, tho I don't see this behavior here (but other games). But please open a new issue for that, I'll then try to reproduce.

kakra commented 5 years ago

@pchome Thanks for the work, I'm on a similar track by running through gdb. JC3 fails at trying to close an invalid handle, it seems to happen after loading an audio API tho this is probably not a clue (in the debugger I see it after loading the Steam API):

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x000000007bc90ff1 in close_handle (handle=handle@entry=0x2502e0) at ../../../../dlls/ntdll/om.c:415
415                 RtlRaiseException( &record );

So your tests make it plausible it's a duplicate handle, and a problem introduced after 4.0?

Did your tests include any of my patches, or did you run against vanilla versions (that is proton-vanilla vs staging-vanilla)?

pchome commented 5 years ago

your tests

No, it's WINE's tests ;) Plain vanilla WINE tests (from proton_3.16 branch) built as standalone "executable".

I picked proton_3.16 branch for the reason -- those tests are not supposed to fail on wine-3.16. So if it fails on proton_3.16, then there is definitely something wrong in proton. Easy to check.

Currently I have only proton_3.16 and wine-staging-4.0 installed in my system, so I'm checking this two. Yes, proton-vanilla vs staging-vanilla.

It's easy to add new tests into build system, or change repo/branch. Or ask me to add additional tests into repo: wine-proton-tests

kakra commented 5 years ago

The tests crash for me on my vanilla-wine 4.0 build along these lines in advapi32/tests/security.c:

    bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
    ok(bret, "GetAclInformation failed\n");
    ok(acl_size.AceCount != 0, "GetAclInformation returned no ACLs\n");

I'm not sure yet if this is the same crash as with JC3 and my Proton branch...

But since I'm seeing this with vanilla-wine 4.0, it's probably a regression that should be reported.

kakra commented 5 years ago

Does no longer crash on a fresh prefix... This is strange because my default prefix should be quite vanilla (but it has gone through some wine upgraded but I never really used it for anything).

kakra commented 5 years ago

I purged the JC3 prefix and it still crashes:

106252.054:0024:0025:trace:module:MODULE_InitDLL (0x3b400000,PROCESS_DETACH,0x1) - RETURN 1
106252.054:0024:0025:trace:module:MODULE_InitDLL (0x7fffff8e0000 L"jc3AudioDSP_MultibandCompressor_SSE_F.dll",PROCESS_DETACH,0x1) - CALL
106252.054:0024:0025:trace:module:MODULE_InitDLL (0x7fffff8e0000,PROCESS_DETACH,0x1) - RETURN 1
106252.054:0024:0025:trace:module:MODULE_InitDLL (0x7fffff890000 L"cudart64_55.dll",PROCESS_DETACH,0x1) - CALL
106252.055:0024:0025:trace:module:MODULE_InitDLL (0x7fffff890000,PROCESS_DETACH,0x1) - RETURN 1
106252.055:0024:0025:trace:module:MODULE_InitDLL (0x7fffff8f0000 L"gfsdk_waveworks.win64.dll",PROCESS_DETACH,0x1) - CALL
106252.055:0024:0025:trace:seh:NtRaiseException code=c0000005 flags=0 addr=0x7fffff89cd73 ip=7fffff89cd73 tid=0025
106252.055:0024:0025:trace:seh:NtRaiseException  info[0]=0000000000000000
106252.055:0024:0025:trace:seh:NtRaiseException  info[1]=00000000006d0c60
106252.055:0024:0025:trace:seh:NtRaiseException  rax=0000000000240038 rbx=00000000006d0c60 rcx=00007fffff8cf220 rdx=00000000006d0c60
106252.055:0024:0025:trace:seh:NtRaiseException  rsi=0000000000090f60 rdi=00000000006d0910 rbp=000000007bcf17a7 rsp=0000000000240000
106252.055:0024:0025:trace:seh:NtRaiseException   r8=0000000000000000  r9=000000000023fe17 r10=00007fffff94e100 r11=0000000000000000
106252.055:0024:0025:trace:seh:NtRaiseException  r12=0000000000090f60 r13=0000000000000000 r14=0000000000000001 r15=0000000000090f90
106252.055:0024:0025:trace:seh:RtlVirtualUnwind type 1 rip 7fffff89cd73 rsp 240000
kakra commented 5 years ago

I've played with the makefile a while, here's my change:

diff --git a/makefile b/makefile
index 67a08ef3594..03d66a78069 100644
--- a/makefile
+++ b/makefile
@@ -138,6 +139,23 @@ install-wine: install-wine64 install-wine32
        echo "Done installing wine libraries!"

+# Run tests
+
+TESTS = \
+       advapi32 \
+       secur32
+
+tests: $(addsuffix /tests,$(TESTS))
+
+$(addsuffix /tests,$(TESTS)): build/wine64/Makefile
+       echo "Running $@..."
+       +$(MAKE) -C build/wine64/dlls/$@ \
+               WINEPREFIX=$(abspath prefix/test) \
+               LANG=C \
+               RUNTESTFLAGS="-v" \
+               test 2>/dev/null | tee tests-$(@:%/tests=%)-$(shell git describe --dirty).txt
+
+
 # Bundle vendor project into the distribution

 vendor/faudio/dist.tar.xz::

The tests seem fine, some are marked todo. Removing -v from RUNTESTFLAGS show no failures at all. So if there's a problem, it may be in the failures expected to fail because of todo.

Attaching my results: tests-advapi32-wine-4.1-532-gc2bd4fd1917-dirty.txt tests-secur32-wine-4.1-532-gc2bd4fd1917-dirty.txt

Meanwhile, I have removed the staging patch sets I've listed above because after rebase to latest wine-master, no game would start at all. This is likely due to resolving a conflict wrong during rebase. But since none of these patches did anything useful for this problem anyway, I just removed them.

kakra commented 5 years ago

Running your pre-built test shows failures (WINEPREFIX=$(realpath prefix/test) dist/bin/wine ../proton-tests/proton-secur-tests-64/bin/test-advapi32-security.exe.so):

0022:security: 2520 tests executed (176 marked as todo, 7 failures), 32 skipped.

Running my version does not (make RUNTESTFLAGS="-v" advapi32/tests):

0008:security: 2732 tests executed (175 marked as todo, 0 failures), 28 skipped.
kakra commented 5 years ago

What if this is related to NVAPI? The game crashes shortly after loading cudart64_55.dll.