protonscr

Suspending or adding/removing monitors causes explorer.exe to leak dbus connections

protonopen
ValveSoftware/Proton#7410 · opened 2024-01-14 by Dadadah · updated 2024-01-14 · 0 comments · github
DDadadah 2024-01-14 github

Locking laptop for an extended period of time or opening/closing the laptop lid with external monitors attached causes explorer.exe to open increasing dbus connections. busctl | grep explorer.exe | wc -l returns the number of explorer.exe connections. An example repro I ran started at 9 connections, then after opening laptop lid went to 39, closing lid again increased it to 81. After a bit, some programs refuse to run as there are no further connections available. Each time the laptop is locked for an extended period of time or the lid is opened/closed the entire machine will perform poorly and the game running on proton is brought into focus for a few seconds. There is a bunch of stuff dumping into syslog during this process resembling something like this:

Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): DFP-1: disconnected
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0):
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): Microstep MSI MAG272CQR (DFP-2): connected
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): Microstep MSI MAG272CQR (DFP-2): Internal TMDS
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): Microstep MSI MAG272CQR (DFP-2): 600.0 MHz maximum pixel clock
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0):
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): DFP-3: disconnected
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): DFP-3: Internal DisplayPort
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0): DFP-3: 2670.0 MHz maximum pixel clock
Jan 14 16:22:46 Jacob-Maingear /usr/libexec/gdm-x-session[4285]: (--) NVIDIA(GPU-0):

This logs in syslog after you run out of connections:

dbus-daemon[1072]: [system] The maximum number of active connections for UID 1000 has been reached (max_connections_per_user=256)

After this happens the game must be restarted and the dbus connections will return to normal. This is an issue particularly for long running games such as Idle games.

OS: Ubuntu 22.04 running X11
GPU: NVIDIA 3070 Max Q
Version: Proton Experimental and Proton 8 tested
Games: Antimatter Dimensions and Crusader Kings III

Repro:
Start a game with proton.
Run busctl | grep explorer.exe | wc -l or lsof -U | tr -s ' ' | cut -d ' ' -f 1 | sort | uniq -c | sort -rns to get the number of explorer.exe connections.
Lock laptop for an extended period of time (I found 15 minutes was long enough), or add/remove a monitor.
Unlock laptop if locked, and observe system performance for a few seconds. Game should be force focused.
Run command again, connections should have increased dramatically.

Log File

Proton versions