Project

General

Profile

Actions

Emulator Issues #11084

closed

Qt: Crash when selecting GC RumbleMotor Config - Global Settings Conflict

Added by Anonymous almost 6 years ago. Updated almost 6 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:
5.0-7348

Description

What's the problem? Describe what went wrong.

Crash

What steps will reproduce the problem?

Open Dolphin -> Controllers -> Port 1 -> Standard Controller -> Configure - > Rumble -> Click Motor Button

Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.

Yes 5.0-7232

Is the issue present in the latest stable version?

N/A - First build that implements this in Qt is 5.0-3805 - https://github.com/dolphin-emu/dolphin/pull/5405 - NO CRASH

If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)

Later, if necessary.

Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)

Faulting application name: Dolphin.exe, version: 0.0.0.0, time stamp: 0x5aeebfaa Faulting module name: Dolphin.exe, version: 0.0.0.0, time stamp: 0x5aeebfaa Exception code: 0xc0000005 Fault offset: 0x00000000000c5e98 Faulting process id: 0x148 Faulting application start time: 0x01d3e4e85bac74fe Faulting application path: C:\GitDEV\DolphinBINDEV\Dolphin-x64\Dolphin.exe Faulting module path: C:\GitDEV\DolphinBINDEV\Dolphin-x64\Dolphin.exe Report Id: 55ab5ff4-6617-44e3-bfbb-746eff6ab6e6 Faulting package full name: Faulting package-relative application ID:

I don't have any adapters of GC controllers connected, nor wiimotes, no bluetooth usb dongles, at this time.

Crash also present in 5.0-6213, however the crash does not happen immediately because there is no PC DInput device selected, once DInput is selected, clicking on Motor produces a crash.

Crash does not happen when using portable mode. Testing something, deleting and archiving global config in Documents.

It appears that it conflits with the settings from an earlier build, no crash after deleting Documents config, the issue is recreatable when restoring the saved global config back.

I will provide a list of the suspected builds which generated the global config, because I didn't pay attention to it I probably ran a few of them without portable.txt.

I can also provide dump file.

PS: Shouldn't dolphin create some crahaslog even if debug logging isn't enabled? I wasn't using an installed version with global config, so no logging was on during these crashes.

** OS **

Windows 10 Pro Anniversary Update 1607


Files

Actions #1

Updated by Anonymous almost 6 years ago

Here's the copy of the global settings that are responsible for the crash.
No logs are written despite enabling info logging.

Actions #2

Updated by spycrab0 almost 6 years ago

  • Status changed from New to Accepted
  • Assignee set to spycrab0
Actions #3

Updated by Anonymous almost 6 years ago

Probable cause found by troubleshooting technique of replacing Global Settings from Portable one by one. No crash after replacing GCPadNew.ini

GCPadNew.ini is empty in Global Settings, while it is populated in the fresh Portable Mode Settings in 5.0-7232

Contents:
[GCPad1] Device = DInput/0/Keyboard Mouse Buttons/A = X Buttons/B = Z Buttons/X = C Buttons/Y = S Buttons/Z = D Buttons/Start = !LMENU & RETURN Main Stick/Up = UP Main Stick/Down = DOWN Main Stick/Left = LEFT Main Stick/Right = RIGHT Main Stick/Modifier = LSHIFT Main Stick/Modifier/Range = 50.000000000000000 C-Stick/Up = I C-Stick/Down = K C-Stick/Left = J C-Stick/Right = L C-Stick/Modifier = LCONTROL C-Stick/Modifier/Range = 50.000000000000000 Triggers/L = Q Triggers/R = W D-Pad/Up = T D-Pad/Down = G D-Pad/Left = F D-Pad/Right = H

** Additional Info **

The newer versions try to respect older settings, while adding new things, devs should rethink if it's worth fixing such conflicts one by one, or create some kind of different system, one of them is a conversion/normalization process where an internal utility would analyze the whole existing config and apply it over the newer defaults.

A new button would be added to Tools Menu "Rebuild Settings ..." with maybe some config before running the process, possibly selecting between global or portable config, etc.

  1. First, the existing config would be backed up into a temporary zip file, excluding shaders, custom textures, larger files over X size, actually there could be a listbox with checkboxes with some of them checked by default and larger stuff unchecked but up to the user to decide.
  2. Then the current dolphin version would delete the existing settings store(complete clean first), then write fresh default configs, after that is done it would reapplying the saved configs in the ZIP ontop, with some kind of smart merging algorightm that discards invalid parameters and/or values.
  3. After that a new window would open with a report showing what was changed, plus generating a raw diff file possibly.

Now it may not be 100% but this system should easily fix such an empty file case, where it doesn't have to do any kind of parameter merging, just writing a new GCPadNew.ini file.
Most likely how to merge would have to be implemented manually per parameter, it won't just know all by it self, but the inital implementation of this feature doesn't necessairly have to be that advanced/complex, improved with time.

Auto Prompt For Settings After Crash - Currently I didn't found out any automatic logs being generated in the dev released version with or withoud debug mode (I can't build/debug in VS2017 right now due to an unrelated issue)
First some kind of record has to be created that dolphin has crashed (yes there's windows events but that's not cross platform)
Then maybe some conditions, for example, it has to crash X amount of times while doing this or that.
And a prompt would come up saying that it has detected crashes and asks the user to try Rebuild Settings or not, explaining what the utility does.

Sorry for grammar, I literally thought of this a minute ago and wrote it quickly.

Actions #4

Updated by Anonymous almost 6 years ago

Additional Info

Also all the missing parameter entries of various options would need to be figured out, some options don't have their INI entries written by default until the user enables/modifies them through the program GUI, personally I'm heavily not a fan of that.
All the settings that can ever be in the INIs and are not treated as volatile(current program-session only) and are meant to be savable, to have it's parameter entry written out in the settings files from the very beginning when the program doesn't detect any existing settings, the value would simply be the same as it is in the internal defaults, or no value at all even if that's okay (seen it before), that would make things easier in the merging/resolving process, but is also more clear when doing manual troubleshooting.

Also one other option in the Rebuild Settings ... internal utility would be to simply clear them without reapplying the old ones ontop - kind of a shortcut of doing it manually, that would be useful for the general public, not that I'm that lazy heh.

Actions #5

Updated by JosJuice almost 6 years ago

In the future, I would appreciate if you just report an issue instead of first reporting an issue and then coming up with nonsensical ideas that you think would solve it. This issue just needs a normal bug fix.

Actions #6

Updated by spycrab0 almost 6 years ago

  • Status changed from Accepted to Fixed
  • Fixed in set to 5.0-7348
Actions

Also available in: Atom PDF