[Linux] Crash when steam input per-game setting is "Forced Off", after using Big Picture mode

[Linux] Crash when steam input per-game setting is “Forced Off”, after using Big Picture mode.

I was testing if my controller will work in Fantasy Strike under Linux, if it was started from steam’s Big Picture Mode (BPM), since there was a discussion in the Discord server, about such an issue. The controller is Razer Sabertooth, recognized by steam as “Xbox 360 Controller”. The controller worked “out of the box” when used from the steam client application, after the “hold 2 buttons” configuration, so what remained to be tested was the BPM interaction.

Initially I was not able to use the controller’s DPad in BPM. To use the DPad in BPM, it was required to configure its mappings (steps 1 and 2 from steps to reproduce). After that, the controller was working OK, when “Steam Input Per-Game Setting” was set to “Global Setting (XBox)” (viewed in BPM), which corresponds to “Use your global Steam Input settings (Xbox)”, when viewed in the steam client, game properties.

After finding that the above configuration was working, I experimented a bit, in search of a configuration that would cause the controller not to work when Fantasy Strike is launched. I was playing around with the “Forced Off”/“Global settings”/“Forced On” options of the “Steam Input Per-Game Setting” setting, when Fantasy Strike exits with SIGABRT.
The issue is reproducible often with the steps below, but not 5 out of 5 times (after going from steps 0 to 7 once, you could repeat only steps 6 and 7).

Steps to reproduce:

  1. Initial state is a clean Linux, Steam and Fantasy Strike installations.
    BPM has not been started nor configured.
    When BPM is first opened, the controller DPad doesn’t function, but the “X,Y,A,B” action
    buttons do function.

  2. Configure controller for use in Big Picture Mode.
    Start BPM, go to options, navigate with mouse to “Controller -> Base Configurations -> Big Picture configuration”, select the DPad and map it’s directions to the corresponding actions
    (move left, right, up, down).

  3. Register the controller (give it a name).
    The controller is initially found as “Detected Controllers: Unrecognized: Xbox 360 Controller” in the “Controller -> Controller Settings” BPM options menu.
    Select the unrecognized controller, go to “Preferences” and give it a name, i.e. “Xbox 360 Controller”, then click “Submit”. After this the “Detected Controllers:” will say,
    “Xbox 360 Controller: Xbox 360 Controller”.

  4. Run Fantasy Strike once with the “Global settings (Xbox)” configuration.
    In BPM go to “Fantasy Strike -> Manage game -> Steam Input -> Controller Options” (or in steam client go to Fantasy Strike properties), and set “Steam Input Per-Game Setting” to “Global settings (Xbox)”. Then go back and launch Fantasy Strike, see that your controller works, and exit the game.

  5. Change the “Steam Input Per-Game Setting” to “Forced Off”.

  6. Restart steam and verify that “Steam Input Per-Game Setting” is still “Forced Off”.

  7. Launch Fantasy Strike from BPM, verify controller works, and exit game and BPM.

  8. Launch Fantasy Strike from the steam client, game will exit with SIGABRT.
    If it doesn’t SIGABRT, exit normally and launch it from steam client again.

Expected Results:
Fantasy Strike runs as usual, and controller is operational when Fantasy Strike starts.

Actual Results:
Fantasy Strike exits, and the terminal from which the steam client was started reports “Got a SIGABRT while executing native code”.

Archive with ok and crash cases.

Game Version:

System Information:
Linux Elementary OS 5.0 Juno
kernel: 4.15.0-50-generic #54-Ubuntu
video driver: i915

laptop model: Lenovo x240
CPU: Intel Core i7-4600U @ 2.10GHz
GPU: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)

steam runtime: jenkins-steam-runtime-beta-release_0.20190320.2
steam client: steam_client_ubuntu12 version 1556574584