beeradmoore / dlss-swapper

GNU General Public License v3.0
1.57k stars 59 forks source link

[BUG] RTSS preventing DLSS Swapper from starting #142

Closed KleKwi closed 7 months ago

KleKwi commented 1 year ago

Describe the bug can not startup

To Reproduce Steps to reproduce the behavior:

  1. double-click DLSS Swapper.exe

Expected behavior startup, has graphic interface

Screenshots If applicable, add screenshots to help explain your problem.

Additional context seems like it startup, then quit, but has no graphic interface and no warning.

crashdump: DLSS Swapper.exe.28920.dmp.zip

beeradmoore commented 1 year ago

Hey @KleKwi, Is this with the installer version or the portable version? Also could you let me know what version it is you are trying to use.

I'll look into the dump file soon.

EDIT: I opened the dump and can see the this was portable v1.0.2. Inside the portable folder there should be a temp folder, did that get created and did any logs get output in there?

KleKwi commented 1 year ago

@beeradmoore portable version 1.0.2, no temp folder.

beeradmoore commented 1 year ago

Just double checked, 'temp' should be in the 'StoredData' folder which is in the root folder, not in the root folder itself.

Any luck with that?

KleKwi commented 1 year ago

@beeradmoore no, StoredData only has json folder.

beeradmoore commented 1 year ago

Thanks for checking.

Just to confirm, v1.0 portable worked fine?

I think the problem is with an underlying framework that I updated. If that is the case I'll downgrade it and release another update. We don't need to be on the latest, it's just nice.

I wish I could replicate the issue here though so I could pin down what version off the framework broke.

Is there anything about your system that may be fairly unique? Running in non-English, using win10 home, using some FPS overlay that maybe is causing it grief, 240hz monitor, or any else that possibly is out of the norm?

KleKwi commented 1 year ago

@beeradmoore 1.0.0 is fine. Windows 11 22H2 22631.1972 Language is Chinese using RTSS 90hz monitor

Oh, I found why, I quit RTSS, then dlss swapper can start.

beeradmoore commented 1 year ago

Interesting. I have RTSS, I'll have to dig around with settings and see if I can replicate.

Had you changed any of the hooks from stock?

KleKwi commented 1 year ago

Interesting. I have RTSS, I'll have to dig around with settings and see if I can replicate.

Had you changed any of the hooks from stock?

Didn't change anything. You may try different settings, see what will happen.

WhyFin commented 1 year ago

I have the same issue with the non-portable installer. Setting the "Application detection level" to "None" within RTSS allows the DLSS Swapper.exe to launch, otherwise it will not.

Kooooolah commented 1 year ago

LOL, v1.0.3 either protable and installation won't work with RTSS

beeradmoore commented 1 year ago

I've been trying all sorts of settings but am struggling to replicate it here so I can report it up the chain and find the last stable version of underlying framework causing the problem 😅

Edit: everyone else using Chinese windows language, or using other?

Edit 2: I have now tried 3 PCs (1 x Win10, 2 x Win11 with a combo of 2 x Stock RTSS, 1 x Possibly modified RTSS settings). I have not tried a computer with multiple displays a computer in another language other than English (AU). I am also using the latest RTSS v7.3.4. Aside from testing those two does anyone have any idea of why their system may be different than mine so I can try replicate the problem?

KleKwi commented 1 year ago

I've been trying all sorts of settings but am struggling to replicate it here so I can report it up the chain and find the last stable version of underlying framework causing the problem 😅

Edit: everyone else using Chinese windows language, or using other?

I'm using Chinese windows language.RTSS Application detection level to low, dlss swapper can not start, setting to None is fine.

Edit: I can replicate in Windows 11 22H2 22631.1972, but not in 22621.1702, maybe it's a system issue. @WhyFin @Kooooolah What's your system?

image

beeradmoore commented 1 year ago

I was going to ask if people were using an AMD or nVidia GPU, but considering this is DLSS Swapper it's very likely its nVidia 😂

I put my display language into simplified Chinese, rebooted and then ran DLSS Swapper while RTSS was running and it started fine. I also have the same RTSS settings and version as you have in the screenshot.

I may have to just make multiple versions of portable where I step through the different version numbers of the underlying framework and just ask if you can try each one and let me know where it dies and where it works.

beeradmoore commented 1 year ago

@KleKwi for reference my 3 test machines were:

I have created a portable build of DLSS Swapper which goes from 1.0.2.1 through to 1.0.2.7. Each step of these versions contains an update to the framework that I think is responsible (WindowsAppSDK). 1.0.2.1 matches what 1.0.0.0 has and 1.0.2.7 matches what is in 1.0.2.0 has.

When you have time could you remove the RTSS application detection level changes for DLSS Swapper and then try 1.0.2.1 (hopefully it works) and then go through the versions until it stops working. If they all work then I don't know what to do 😅, but if we can confirm what version breaks I can revert to the version before that and release DLSS Swapper 1.0.3 and report the problem version up stream so hopefully Microsoft can fix it.

DLSS Swapper Version WindowsAppSDK Version
1.0.2.1 1.2.221209.1
1.0.2.2 1.2.230118.102
1.0.2.3 1.2.230217.4
1.0.2.4 1.2.230313.1
1.0.2.5 1.3.230331000
1.0.2.6 1.3.230502000
1.0.2.7 1.3.230602002

EDIT 1: @KleKwi , you mentioned two PCs but not being able to replicate on both. They both using the same nVidia driver version and both the same version of RTSS? I wonder about driver version incase there is something in there that changes the hook for RTSS. My Win10 and Win11 machine are both running 536.40. The third machine is an ROG Ally so no nVidia drivers.

KleKwi commented 1 year ago

@beeradmoore tow machine's driver and RTSS version is the same, I wiil try the versions you provided.

KleKwi commented 1 year ago

@beeradmoore I'm testing on Windows 11 22H2 22621.1702, I lowered my system version, so I can not test on Windows 11 22H2 22631.1972. Every version you provided is ok, with or without RTSS. This is odd 😅. Other people has this issue could help testing. @WhyFin @Kooooolah

DLSS Swapper Version With RTSS level low With RTSS level None
1.0.2.1 ok ok
1.0.2.2 ok ok
1.0.2.3 ok ok
1.0.2.4 ok ok
1.0.2.5 ok ok
1.0.2.6 ok ok
1.0.2.7 ok ok
WhyFin commented 1 year ago

Windows 11 Pro 22H2 22621.1848

DLSS Swapper Version Launch with RTSS enabled
1.0.2.1 pass
1.0.2.2 pass
1.0.2.3 fail
1.0.2.4 fail
1.0.2.5 fail
1.0.2.6 fail
1.0.2.7 fail
beeradmoore commented 1 year ago

Hmmm...

Being able to narrow it down to RTSS I can see multiple issues filed about it over in the WindowsAppSDK or related repositories:

From the above info the last good version of WindowsAppSDK came out Jan 26 2023, the failing version came out in Feb 23 2023. Neither of these align great with the above timeline of people originally reporting issues. It sounds like this has been reported to both MS and RTSS teams. In fact the first things in the RTSS 7.3.4 changelog are

Improved hook engine:

  • Added WinUI3 runtime libraries to injection ignore triggers list
  • Added 64-bit VK Play overlay library to the list of trigger modules for delayed injection engine
  • Now injection ignore triggers list can specify modules, dynamically loaded by hooked application during runtime. This feature can be used to the exclude applications using delayed load of WPF/WinUI3 runtimes (e.g. Microsoft Power Toys)

(for the above, WinUI3 is WindowsAppSDK)

I was hoping there was a specific version that had a specific change that was obviously the problem so we could point to and wait until that is released so we can update again to the latest WindowsAppSDK, but that doesn't appear to be the case.

I think the best course of action will be to try a pinned topic of "DLSS Swapper won't launch/crashes on launch" with some helpful tips like "Set DLSS Swapper.exe to ignored in RTSS" and other info on how to get log files if they are generated. Pretty much how lively handles it here.

EDIT 1: Thinking about why we can't see concrete numbers of X version is good Y version is bad, it could be down to the system and how RTSS is running. If there is a specific time limit that it needs to try hook or something it could be causing different results on different runs which then may mean the problem is not related to the underlying WindowsAppSDK version and as to why its so hard to replicate.

JXPCrab commented 11 months ago

I have same issue with Windows 10 Pro 22H2 19045.3324

DLSS Swapper v 1.0.2.1 - Pass DLSS Swapper v 1.0.2.2 - Pass (longer loading time)

Other version - Fail

markishome359 commented 9 months ago

Weird, getting this on my machine as well, so I'm glad I found this thread.

English, USA Windows 10 Pro 22H2 19045.3570 Windows Feature Experience Pack 1000.19052.1000.0

RTSS 7.3.2 Beta 2

All application detection levels block DLSS Swapper from launching for installer versions 1.0.2.0 and 1.0.3.1.

beeradmoore commented 9 months ago

Thanks for the bump, reminded me to go and look into a thread I commented on Guru3D forum about RTSS hooking apps it shouldn't.

Unwinder (developer of RTSS) replied and has added DLSS Swapper to the built in exclusion list. I just checked and can see it myself in RTSS 7.3.5 Beta 5 (it maybe have been in earlier betas but I can't see downloads/release notes for those).

I should also be able to add something to DLSS Swapper to prevent it getting hooked for those using older versions of RTSS (looking at you @markishome359 😅), leaving that code below to remember what it is,

// extern "C"
// {
// __declspec(dllexport) DWORD RTSSHooksCompatibility = 0x00000000;
// }
beeradmoore commented 7 months ago

Another update to this. Code has been written to ignore DLSS Swapper for all versions of RTSS, however it can't actually be used until WindowsAppSDK supports full native ahead-of-time (NativeAOT) compilation, which requires CsWinRT to also support it first.

So someday it will be ok, today is not that day.

The workaround to this problem is:

Closing this issue for now. Thanks everyone for the help getting to this point.