Fixing a 3 year old bug in Nvidia GeForce Experience
details-of-note.blogspot.com
details-of-note.blogspot.com
The corollary is that fixing any such problem is only a matter of how efficiently you can do the necessary detective work to narrow down where those important bytes are. Onlookers are often puzzled how you did something that seems impossible to them, but the key is the realization that "it's possible" was never in question. It's only a matter of finding the path to make your computer do what you want - just like programming.
(Yes, there are fundamental limits like CPU bugs, web requests or homeomorphic encryption. Normally one can be quite sure which of these are relevant in the first place though. And of course, you can't fix software that is a complete mess in the first place, but working around specific bugs is often practical.)
Chromium is open source, so we can take a look at the source code:
https://source.chromium.org/chromium/chromium/src/+/master:d...
(it's actually the wrong function - StopMonitor - but it references the same DeviceUsages constant that StartMonitor uses so it still worked)
Nvidia probably uses the Gamepad API in whatever they use CEF for:
https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API...
A more stable patching approach would be to find the JS sources and patch that.
int miIsSolidAlpha(void)
{
/* fprintf(stderr,"miIsSolidAlpha called\n"); */
return 0;
}
I'm not sure if this is an argument for progress or not (we use embedded development systems, and it's really common to 'export DISPLAY=someothercomputer:0') this trivial hack means Eclipse/segger/other random IDE's run perfectly on systems some of which are 22 years old now.Edit (requested build info):-
gcc -shared -Wl,-soname,nvtweak.so.1 -o nvtweak.so.1.0 nvtweak.cBoth posts ask at the end something like "why/how did they mess this up" but it's pretty obvious to me as a developer ... when software systems get big, teams and timelines get big, pressure for new features and fixes for more critical problems crowd out minor cleanups and quality-of-life refinements, and that helps perpetuate the cycle. I think it is kind of important to have a reminder of how the biggest, wealthiest, and most prestigious companies can have numerous small dumb bugs hidden randomly throughout their huge software suites, and not have the motivation to fix ones that have been reported for years. But one random but smart person outside the org can take a couple of days and figure it out.
The other fun part: what will making this change break?
This amazing work could have been done quietly for the benefit of the ONE.
Now the MANY benefit from the fix and more importantly the process, the challenges, the failures. Writing the post doubled the work required and likely required longer than fixing the original problem.
IF YOU DON'T WRITE IT DOWN, IT NEVER HAPPENED.
There should be a Presidential award for posts like this this
Though I'm also amazed people install Geforce Experience, see that you need to create an account to log into it (supports Facebook login even) for something you're ostensibly using to manage local Nvidia drivers, and then proceed with the installation process.
All Experience adds to Ansel is "easier sharing" of the screenshots: https://developer.nvidia.com/Ansel
(https://moonlight-stream.org/ is a fantastic open-source implementation of the client side part)
MSI Afterburner is another one I've seen mentioned but I've not tested it.
It was GeForce Experience.
Sadly I didn't go down the rabbit hole of actually debugging it, thus I uninstalled it and went on with my life.
I do love seeing Ghidra and x64dbg being used though, as it's been useful to me for other projects.
x64bg: https://x64dbg.com/#start
Ghidra: https://ghidra-sre.org/
https://www.techpowerup.com/download/techpowerup-nvcleanstal...
I wish someone would make something equal for the AMD drivers.
AFAIK amd's driver installer allows you to select the driver only, and the radeon control panel won't be installed
I remember that Joystick dialogue box from years ago -- maybe even Windows 98 days. Surprised it's not been updated, but I suppose it serves it's purpose.
> [...]
>Changing the 0x04 to a 0x06 means that instead of trying to get raw input from joysticks, they get it from the keyboard instead
Why does changing the usage id fix the issue? The prior paragraph suggests the issue is with the api itself, not with a particular usage id.