protonscr

On Proton 8.0-3 when having multiple audio inputs some games crash

protonclosed
ValveSoftware/Proton#6964 · opened 2023-07-25 by Plarpoon · updated 2023-09-15 · 10 comments · github
PPlarpoon 2023-07-25 github

This issue comes from the realization that many games are connected by this same bug, as discussed on the Deep Rock Galactic issue page and the Remnant: From the ashes one. I would like for others in this issue with a different hardware configuration from mine to test this out and report if they can confirm this bug being reproduced as-well, so we can identify with precision exactly what is causing it.

The current idea is that games made with Unreal 4 or using a specific plugin for voice communications in it are what are causing this issue. If you can test this out with many other games as I did until now we should get a more clear idea!

In this screenshot we can see an example of invalid configuration for playing some specific games on Proton 8:
image

As you can see here we have the Yeti Stereo Microphone, Trust QHD Webcam and Game Capture HD60 S+ which are all enabled as input devices.

If you want to reproduce this bug you just need to have more than on input device that's enabled and start either of the verified as bugged games, Deep Rock Galactic and Remnant: from the Ashes for now. You can have anything you want other than "Off" into the profile, I used Analog Stereo Input but that's not the only one that I tested it with. You can use even odd profiles, as long as it's not deactivated it will crash the game.

I have made the same exact experiment but this time with many output audio devices, the problem does not exist in that case.

I have tested changing the profile of my only output device to Stereo to remove the 7.1 channel issue but that didn't solve anything either.

Here is a link to the currently most recent comment about it.
You can find under this message the list of my current configuration:

This is what is printed out as a result of lshw -C sound (click on this to see my audio hardware configuration)

*-multimedia
description: Audio device
product: Advanced Micro Devices, Inc. [AMD/ATI]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0.1
bus info: pci@0000:03:00.1
logical name: card2
logical name: /dev/snd/controlC2
logical name: /dev/snd/hwC2D0
logical name: /dev/snd/pcmC2D3p
logical name: /dev/snd/pcmC2D7p
logical name: /dev/snd/pcmC2D8p
logical name: /dev/snd/pcmC2D9p
version: 00
width: 32 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list
configuration: driver=snd_hda_intel latency=0
resources: irq:193 memory:fcb20000-fcb23fff
*-multimedia
description: Multimedia audio controller
product: CMI8788 [Oxygen HD Audio]
vendor: C-Media Electronics Inc
physical id: 4
bus info: pci@0000:08:04.0
logical name: card1
logical name: /dev/snd/controlC1
logical name: /dev/snd/pcmC1D0c
logical name: /dev/snd/pcmC1D0p
logical name: /dev/snd/pcmC1D1c
logical name: /dev/snd/pcmC1D1p
version: 00
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list
configuration: driver=snd_virtuoso latency=32 maxlatency=24 mingnt=2
resources: irq:24 ioport:e000(size=256)
*-usb:1
description: Audio device
product: Blue Microphones Yeti Stereo Microphone Consumer Control
vendor: Blue Microphones
physical id: 4
bus info: usb@1:4
logical name: card5
logical name: /dev/snd/controlC5
logical name: /dev/snd/pcmC5D0c
logical name: /dev/snd/pcmC5D0p
logical name: input5
logical name: /dev/input/event5
version: 1.00
serial: REV8
capabilities: usb-1.10 audio-control usb
configuration: driver=usbhid maxpower=100mA speed=12Mbit/s
*-usb:1
description: Audio device
product: USB Audio
vendor: Generic
physical id: 6
bus info: usb@3:6
logical name: card6
logical name: /dev/snd/controlC6
logical name: /dev/snd/pcmC6D0c
logical name: /dev/snd/pcmC6D0p
logical name: /dev/snd/pcmC6D1c
logical name: /dev/snd/pcmC6D1p
logical name: /dev/snd/pcmC6D2c
logical name: /dev/snd/pcmC6D2p
logical name: /dev/snd/pcmC6D3p
version: 0.03
capabilities: usb-2.00 audio-control
configuration: driver=snd-usb-audio maxpower=100mA speed=480Mbit/s
*-multimedia
description: Audio device
product: Rembrandt Radeon High Definition Audio Controller
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0.1
bus info: pci@0000:16:00.1
logical name: card3
logical name: /dev/snd/controlC3
logical name: /dev/snd/hwC3D0
logical name: /dev/snd/pcmC3D3p
logical name: /dev/snd/pcmC3D7p
version: 00
width: 32 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list
configuration: driver=snd_hda_intel latency=0
resources: irq:195 memory:fc980000-fc983fff
*-usb:0
description: Audio device
product: CPH2399
vendor: OnePlus
physical id: 1
bus info: usb@7:2.1.1
logical name: card7
logical name: /dev/snd/controlC7
logical name: dmmidi7
logical name: midi7
logical name: /dev/snd/midiC7D0
version: 2.23
serial: RCZHHMTOEMV4DEJJ
capabilities: usb-2.00 audio-control
configuration: driver=snd-usb-audio maxpower=500mA speed=480Mbit/s
*-usb:2
description: Video
product: Trust QHD Webcam
vendor: SC
physical id: 3
bus info: usb@7:2.1.3
logical name: card4
logical name: /dev/snd/controlC4
logical name: /dev/snd/pcmC4D0c
version: 0.10
serial: 202001010001
capabilities: usb-2.00
configuration: driver=snd-usb-audio maxpower=500mA speed=480Mbit/s
*-usb
description: Video
product: Game Capture HD60 S+
vendor: Elgato
physical id: 4
bus info: usb@8:2.1.4
logical name: card0
logical name: /dev/snd/controlC0
logical name: /dev/snd/pcmC0D0c
version: 0.01
serial: 0007EC43F3000
capabilities: usb-3.00
configuration: driver=snd-usb-audio maxpower=800mA speed=5000Mbit/s

This is my Steam Runtime System Information:
https://gist.github.com/Plarpoon/71f189689e369fb75f884ff845760f02

This is my current setup:
image
Mesa version: Mesa 23.1.3
Driver: AMD Radeon RX 7900 XTX (gfx1100, LLVM 16.0.6, DRM 3.52, 6.4.3-1-default)

Iivyl 2023-07-28 github

Thanks for the logs and detailed report!

I have 0fd9:006a Elgato Systems GmbH Game Capture HD60 S+ and it's not enough to make the game crash. I've tried having 1-4 input audio devices enabled. I'm on a slightly newer PipeWire (Server Name: PulseAudio (on PipeWire 0.3.75)).

What the two games have in common is built-in voice chat. I wouldn't be surprised if they were using the same plugin / middleware. On Linux the games don't allow you to select the input device. The selection list is just empty, not even the default device. I think that's an important clue and I'm trying to look into what the game queries and why it might be the case.

The game also calls EnumAudioEndpoints(eCapture) 8 times in short succession which is weird.

Iivyl 2023-07-31 github

Can you share a log of the crash, preferably with Deep Rock Galactic, with PROTON_LOG=+pulse,+mmdevapi,+dsound %command%?

PPlarpoon 2023-08-09 github

Hi @ivyl, I just came back from the holidays, I did mention that in another issue. Sorry I kept you on hold but I was really far away from the computer :)

I have good news, the issue seems to be solved, I don't know why but it is solved. Here is the log file you wanted:

steam-548430.log

After you mentioned being on a newer version of pipewire I realized it was some days I hadn't done any update so I just synced with my distro's newest releases.

I updated my kernel from 6.4.3-1 to 6.4.8-1 and this is my Steam Runtime System Information

Hope everything is alright with you, as said I can now enter into the game successfully so something has changed.

Rrcbevans 2023-09-08 github

Can you share a log of the crash, preferably with Deep Rock Galactic, with PROTON_LOG=+pulse,+mmdevapi,+dsound %command%?

I think the same crash is happening in Dying Light 2, and Remnant: From the Ashes. Logs are available there.

Assuming it's the same issue, the problem is not resolved in latest Proton Experimental, at least not in Dying Light 2 and Remnant: From the Ashes.

EDIT:

I just tried using pavucontrol to set the configuration of my secondary audio input (BRIO Ultra HD Webcam) to Off and the games all now launch. You appear to be totally right that it's down to having multiple audio input devices.

PPlarpoon 2023-09-08 github

I don't own DL2 but I can confirm the issue with Remnant and DRG. Both of them tested recently and still yield the same results!

Rrcbevans 2023-09-08 github

After using pavucontrol to set the secondary (unused) input device configuration to "Off", the games launch using the Proton 8/Experimental default dsound.dll. Tested with both DL2 and Remnant.

PPlarpoon 2023-09-08 github

@rcbevans Yes, that's the conclusion I came with my previous report too. With Pavucontrol disabling all my audio input sources except the BlueYeti microphone fixed it.

@kisak-valve actually was the one who made me realize first that it's very likely an Unreal plugin bug that handles voice comms shared between games.

PPlarpoon 2023-09-09 github

@kisak-valve does this count as a successful retest? Or is that something different that's done internally separately?

Iivyl 2023-09-15 github

Hi. The dsound fixes were accepted in Wine's upstream and I've cherry-picked them into Proton. Those should be available on Proton Experimental's bleeding-edge branch (may require Steam restart to pick up the latest update, experimental-bleeding-edge-8.0-55994-20230915 or newer) in ~15 minutes. If this fixes the problem for you feel free to close this issue :-)

The fixes will trickle into the next experimental and later on into 8.0-5.

PPlarpoon 2023-09-15 github

I have just tested it with all games, this was a complete success and everything works amazingly. I am going to close this ticket now as it's officially resolved.

Thank you everyone, especially thanks to @ivyl and @kisak-valve for helping out a lot in discovering what the problem was and fixing it!

If I can do anything at all in the future to help test things out just ping me and I will gladly help!

Thanks again everyone!

P.s.
As written before this post, the fix will come out officially on Proton 8.0-5, it's also currently temporarily available on the bleeding-edge beta channel of Experimental.

Proton versions

Launch options

Upstream links

DLLs