I’m experiencing a serious issue with reverse PRIME: I cannot turn it off. It may seem strange, but it is true. I followed this guide to set it up. The only difference is that I use the following configuration:
Section "ServerLayout"
Identifier "layout"
Screen 0 "intel"
Inactive "nvidia"
Option "AllowNVIDIAGPUScreens"
EndSection
Section "Device"
Identifier "intel"
Driver "modesetting"
BusID "PCI:0:2:0"
Option "DRI" "3"
EndSection
Section "Screen"
Identifier "intel"
Device "intel"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "nvidia"
Device "nvidia"
EndSection
Then I ran xrandr --setprovideroutputsource NVIDIA-G0 modesetting
and xrandr --auto
. And all was well, because the outputs of the dGPU showed up in the output of xrandr
. And I was indeed able to connect an external monitor, and it worked, apart from the fact that using GNOME, if the external monitor is positioned above the internal one, then it acts as if both monitors were just a single one: for example, making an app full screen causes it to span both monitors.
xrandr --listproviders
reports:
Providers: number : 2
Provider 0: id: 0x43 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 1 associated providers: 1 name:modesetting
Provider 1: id: 0x26e cap: 0x2, Sink Output crtcs: 4 outputs: 5 associated providers: 1 name:NVIDIA-G0
Unfortunately, I cannot turn it off. I tried:
- restarting X
- rebooting
- downgrading the drivers to 440.100 and then upgrading
- disabling optimus-manager
- manually starting X
- disabling D3 power management
- both 450.57 and 450.66 series drivers
- the latest version of X from git
and combinations of those. The setting persists.
NVIDIA driver version: 450.66
XOrg server version: 1.20.9-1 (Manjaro)
XOrg ANSI C Emulation: 0.4
XOrg Video Driver: 24.1
XOrg XInput driver : 24.1
XOrg Server Extension : 10.0
Linux kernel version: 5.4.60-2-MANJARO
DE: GNOME 3.36.5
DM: GDM
When an external display is connected (HDMI), and I run xrandr --setprovideroutputsource NVIDIA-G0 0x0
, then the external display turns off, so I assume it no longer receives any output. However, xrandr
still displays the outputs of the nvidia GPU, and the number of associated providers is still 1 - it should change to 0, no? When I use PRIME to render everything on the nvidia GPU (xrandr --setprovideroutputsource modesetting NVIDIA-0
), and I execute xrandr --setprovideroutputsource modesetting 0x0
, then the internal display goes blank, and the internal display disappears from the output of xrandr
, and the number of associated providers goes down to zero as expected.
When I execute xrand --setprovideroutputsource NVIDIA-G0 0x0
for the second time, the server hangs or dies:
// first xrandr --setprovideroutputsource NVIDIA-G0 0x0
[ 4641.429] (II) NVIDIA(G0): Setting mode "NULL"
[ 4641.474] (II) modeset(0): EDID vendor "BOE", prod id 2125
[ 4641.474] (II) modeset(0): Printing DDC gathered Modelines:
[ 4641.474] (II) modeset(0): Modeline "1920x1080"x0.0 342.05 1920 2028 2076 2080 1080 1090 1100 1142 +hsync -vsync (164.4 kHz eP)
[ 4641.500] (II) modeset(0): EDID vendor "BOE", prod id 2125
[ 4641.500] (II) modeset(0): Printing DDC gathered Modelines:
[ 4641.500] (II) modeset(0): Modeline "1920x1080"x0.0 342.05 1920 2028 2076 2080 1080 1090 1100 1142 +hsync -vsync (164.4 kHz eP)
[ 4641.502] (II) modeset(0): EDID vendor "BOE", prod id 2125
[ 4641.502] (II) modeset(0): Printing DDC gathered Modelines:
[ 4641.502] (II) modeset(0): Modeline "1920x1080"x0.0 342.05 1920 2028 2076 2080 1080 1090 1100 1142 +hsync -vsync (164.4 kHz eP)
[ 4641.502] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 4641.502] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
[ 4641.502] (--) NVIDIA(GPU-0): DFP-0: 2660.0 MHz maximum pixel clock
[ 4641.502] (--) NVIDIA(GPU-0):
[ 4641.503] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 4641.503] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 4641.503] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 4641.503] (--) NVIDIA(GPU-0):
[ 4641.503] (--) NVIDIA(GPU-0): DFP-2: disconnected
[ 4641.503] (--) NVIDIA(GPU-0): DFP-2: Internal DisplayPort
[ 4641.503] (--) NVIDIA(GPU-0): DFP-2: 2660.0 MHz maximum pixel clock
[ 4641.503] (--) NVIDIA(GPU-0):
[ 4641.503] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 4641.503] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 4641.503] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 4641.503] (--) NVIDIA(GPU-0):
[ 4641.533] (--) NVIDIA(GPU-0): Samsung S22F350 (DFP-4): connected
[ 4641.533] (--) NVIDIA(GPU-0): Samsung S22F350 (DFP-4): Internal TMDS
[ 4641.533] (--) NVIDIA(GPU-0): Samsung S22F350 (DFP-4): 600.0 MHz maximum pixel clock
[ 4641.533] (--) NVIDIA(GPU-0):
// second xrandr --setprovideroutputsource NVIDIA-G0 0x0
[ 4662.608] (II) NVIDIA(G0): Setting mode "NULL"
[ 4662.615] (EE)
[ 4662.615] (EE) Backtrace:
[ 4662.615] (EE) 0: /usr/lib/Xorg (xorg_backtrace+0x53) [0x5608c2619c03]
[ 4662.615] (EE) 1: /usr/lib/Xorg (0x5608c24d3000+0x151a45) [0x5608c2624a45]
[ 4662.615] (EE) 2: /usr/lib/libc.so.6 (0x7f7addfe0000+0x3d6a0) [0x7f7ade01d6a0]
[ 4662.616] (EE) 3: /usr/lib/libc.so.6 (gsignal+0x145) [0x7f7ade01d615]
[ 4662.616] (EE) 4: /usr/lib/libc.so.6 (abort+0x116) [0x7f7ade006862]
[ 4662.616] (EE) 5: /usr/lib/libc.so.6 (0x7f7addfe0000+0x7f5e8) [0x7f7ade05f5e8]
[ 4662.616] (EE) 6: /usr/lib/libc.so.6 (0x7f7addfe0000+0x8727a) [0x7f7ade06727a]
[ 4662.616] (EE) 7: /usr/lib/libc.so.6 (0x7f7addfe0000+0x88d4c) [0x7f7ade068d4c]
[ 4662.616] (EE) 8: /usr/lib/xorg/modules/drivers/nvidia_drv.so (0x7f7adc9a5000+0x7af19) [0x7f7adca1ff19]
[ 4662.616] (EE) 9: /usr/lib/xorg/modules/drivers/nvidia_drv.so (0x7f7adc9a5000+0x4eec1a) [0x7f7adce93c1a]
[ 4662.616] (EE)
[ 4662.616] (EE)
Fatal server error:
[ 4662.616] (EE) Caught signal 6 (Aborted). Server aborting
// couple lines about consulting the X.Org foundation
// then the server hangs or terminates "gracefully"
When it hangs after the second “setprovideroutputsource”, gdb
reveals this backtrace:
#0 0x00007f7ee44d2a1b in __lll_lock_wait_private () at /usr/lib/libc.so.6
#1 0x00007f7ee44d9da3 in calloc () at /usr/lib/libc.so.6
#2 0x00007f7ee46aa2ad in _dbus_pending_call_new_unlocked () at /usr/lib/libdbus-1.so.3
#3 0x00007f7ee4697cd5 in dbus_connection_send_with_reply () at /usr/lib/libdbus-1.so.3
#4 0x00007f7ee4698082 in dbus_connection_send_with_reply_and_block () at /usr/lib/libdbus-1.so.3
#5 0x000055712c87122b in ddxGiveUp ()
#6 0x000055712c851efc in FatalError ()
#7 0x000055712c857aa9 in ()
#8 0x00007f7ee448a6a0 in <signal handler called> () at /usr/lib/libc.so.6
#9 0x00007f7ee448a615 in raise () at /usr/lib/libc.so.6
#10 0x00007f7ee4473862 in abort () at /usr/lib/libc.so.6
#11 0x00007f7ee44cc5e8 in __libc_message () at /usr/lib/libc.so.6
#12 0x00007f7ee44d427a in () at /usr/lib/libc.so.6
#13 0x00007f7ee44d5b0c in _int_free () at /usr/lib/libc.so.6
#14 0x00007f7ee32fb0c9 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#15 0x000055712de50040 in ()
#16 0x000055712f096300 in ()
#17 0x000055712e086340 in ()
#18 0x000055712e8a5e60 in ()
#19 0x000055712e8a5fe0 in ()
#20 0x000055712e6eaa20 in ()
#21 0x00000000000085b1 in ()
#22 0x00007f7ee32fb15f in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#23 0x000055712f096300 in ()
#24 0x00007f7ee3300bc2 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#25 0x000055712f27f890 in ()
#26 0x000055712e6eaa20 in ()
#27 0x0000000000000000 in ()
When it does not run into that deadlock, and dies “gracefully”, gdb
shows this backtrace:
Thread 1 "Xorg" received signal SIGABRT, Aborted.
#0 0x00007fe350793615 in raise () at /usr/lib/libc.so.6
#1 0x00007fe35077c862 in abort () at /usr/lib/libc.so.6
#2 0x00007fe3507d55e8 in __libc_message () at /usr/lib/libc.so.6
#3 0x00007fe3507dd27a in () at /usr/lib/libc.so.6
#4 0x00007fe3507de64c in _int_free () at /usr/lib/libc.so.6
#5 0x00007fe34f195f04 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#6 0x00007fe34f6040c9 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#7 0x0000557a91d97040 in ()
#8 0x0000557a92f33470 in ()
#9 0x0000557a91fcd310 in ()
#10 0x0000557a927631e0 in ()
#11 0x0000557a92763360 in ()
#12 0x0000557a925a7da0 in ()
#13 0x0000000000000195 in ()
#14 0x00007fe34f60415f in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#15 0x0000557a92f33470 in ()
#16 0x00007fe34f609bc2 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#17 0x0000557a930a4900 in ()
#18 0x0000557a925a7da0 in ()
#19 0x0000000000000000 in ()
When I run the command just once, and then close my GNOME session, the X server also dies or hangs, gdb
revelas a similar stack:
#0 0x00007f0820f3ca1b in __lll_lock_wait_private () at /usr/lib/libc.so.6
#1 0x00007f0820f43da3 in calloc () at /usr/lib/libc.so.6
#2 0x00007f08211142ad in _dbus_pending_call_new_unlocked () at /usr/lib/libdbus-1.so.3
#3 0x00007f0821101cd5 in dbus_connection_send_with_reply () at /usr/lib/libdbus-1.so.3
#4 0x00007f0821102082 in dbus_connection_send_with_reply_and_block () at /usr/lib/libdbus-1.so.3
#5 0x000055b0da90822b in ddxGiveUp ()
#6 0x000055b0da8e8efc in FatalError ()
#7 0x000055b0da8eeaa9 in ()
#8 0x00007f0820ef46a0 in <signal handler called> () at /usr/lib/libc.so.6
#9 0x00007f0820ef4615 in raise () at /usr/lib/libc.so.6
#10 0x00007f0820edd862 in abort () at /usr/lib/libc.so.6
#11 0x00007f0820f365e8 in __libc_message () at /usr/lib/libc.so.6
#12 0x00007f0820f3e27a in () at /usr/lib/libc.so.6
#13 0x00007f0820f3fb0c in _int_free () at /usr/lib/libc.so.6
#14 0x00007f081fd647f5 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#15 0x000055b0daf8c040 in ()
#16 0x000055b0db1c2430 in ()
#17 0x000055b0db79cdb0 in ()
#18 0x00007f081fd5ee62 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#19 0x00007f08200f91d8 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#20 0x00007f08200f91d8 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#21 0x000055b0daf8c040 in (
#22 0x00007f081fd5eed8 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#23 0x0000000000000000 in ()
when the server dies:
Thread 1 "Xorg" received signal SIGTERM, Terminated.
0x00007fa521bb45de in epoll_wait () from /usr/lib/libc.so.6
(gdb) c
Continuing.
Thread 1 "Xorg" received signal SIGSEGV, Segmentation fault.
0x00007fa521b40310 in free () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007fa521b40310 in free () at /usr/lib/libc.so.6
#1 0x00007fa5204f3f04 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#2 0x00007fa5209617f5 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#3 0x000055eaf7aaf040 in ()
#4 0x000055eaf7ce5320 in ()
#5 0x000055eaf82bfdb0 in ()
#6 0x00007fa52095be62 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#7 0x00007fa520cf61d8 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#8 0x00007fa520cf61d8 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#9 0x000055eaf7aaf040 in ()
#10 0x00007fa52095bed8 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#11 0x0000000000000000 in ()
and the logs:
[ 591.722] (EE)
[ 591.722] (EE) Backtrace:
[ 591.722] (EE) 0: /usr/lib/Xorg (xorg_backtrace+0x53) [0x55eaf5d55c03]
[ 591.722] (EE) 1: /usr/lib/Xorg (0x55eaf5c0f000+0x151a45) [0x55eaf5d60a45]
[ 591.723] (EE) 2: /usr/lib/libc.so.6 (0x7fa521ab4000+0x3d6a0) [0x7fa521af16a0]
[ 591.723] (EE) 3: /usr/lib/libc.so.6 (cfree+0x20) [0x7fa521b40310]
[ 591.723] (EE) 4: /usr/lib/xorg/modules/drivers/nvidia_drv.so (0x7fa520479000+0x7af04) [0x7fa5204f3f04]
[ 591.723] (EE) 5: /usr/lib/xorg/modules/drivers/nvidia_drv.so (0x7fa520479000+0x4e87f5) [0x7fa5209617f5]
[ 591.723] (EE)
[ 591.723] (EE) Segmentation fault at address 0xfffffffffffffff7
[ 591.723] (EE)
Fatal server error:
[ 591.723] (EE) Caught signal 11 (Segmentation fault). Server aborting
Redirecting the stderr stream of Xorg reveals another interesting thing:
double free or corruption (!prev)
Using the master branch of the xserver repository (commit 2902b78535ecc6821cc027351818b28a5c7fdbdc), the following traces may be acquired when executing the “setprovideroutputsource” command twice:
Thread 1 "X" received signal SIGSEGV, Segmentation fault.
0x00007fcf04575310 in free () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007fcf04575310 in free () at /usr/lib/libc.so.6
#1 0x00007fcf02fc2f04 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#2 0x00007fcf0347b209 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#3 0x000056134a15cae0 in ()
#4 0x000056134b5a8760 in ()
#5 0x000056134a392d00 in ()
#6 0x000056134ab28dd0 in ()
#7 0x000056134ab28f50 in ()
#8 0x000056134a96db60 in ()
#9 0x0000000000000000 in ()
(gdb) c
Continuing.
Thread 1 "X" received signal SIGABRT, Aborted.
0x00007fcf04526615 in raise () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007fcf04526615 in raise () at /usr/lib/libc.so.6
#1 0x00007fcf0450f862 in abort () at /usr/lib/libc.so.6
#2 0x0000561349d8725a in System ()
#3 0x0000561349d90a0b in AbortServer ()
#4 0x0000561349d90f2b in FatalError ()
#5 0x0000561349d83576 in OsSigHandler ()
#6 0x00007fcf045266a0 in <signal handler called> () at /usr/lib/libc.so.6
#7 0x00007fcf04575310 in free () at /usr/lib/libc.so.6
#8 0x00007fcf02fc2f04 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#9 0x00007fcf0347b209 in () at /usr/lib/xorg/modules/drivers/nvidia_drv.so
#10 0x000056134a15cae0 in ()
#11 0x000056134b5a8760 in ()
#12 0x000056134a392d00 in ()
#13 0x000056134ab28dd0 in ()
#14 0x000056134ab28f50 in ()
#15 0x000056134a96db60 in ()
#16 0x0000000000000000 in ()
and the X logs (verbosity 9):
// first "setprovideroutputsource"
[ 4734.301] (II) modeset(0): EDID vendor "BOE", prod id 2125
[ 4734.301] (II) modeset(0): Printing DDC gathered Modelines:
[ 4734.301] (II) modeset(0): Modeline "1920x1080"x0.0 342.05 1920 2028 2076 2080 1080 1090 1100 1142 +hsync -vsync (164.4 kHz eP)
[ 4734.303] (II) modeset(0): EDID vendor "BOE", prod id 2125
[ 4734.303] (II) modeset(0): Printing DDC gathered Modelines:
[ 4734.303] (II) modeset(0): Modeline "1920x1080"x0.0 342.05 1920 2028 2076 2080 1080 1090 1100 1142 +hsync -vsync (164.4 kHz eP)
[ 4734.303] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 4734.303] (--) NVIDIA(GPU-0): DFP-0: Internal DisplayPort
[ 4734.303] (--) NVIDIA(GPU-0): DFP-0: DFP is not internal to notebook
[ 4734.303] (--) NVIDIA(GPU-0): DFP-0 Name Aliases:
[ 4734.303] (--) NVIDIA(GPU-0): DFP
[ 4734.303] (--) NVIDIA(GPU-0): DFP-0
[ 4734.303] (--) NVIDIA(GPU-0): DPY-0
[ 4734.303] (--) NVIDIA(GPU-0): DP-1-0
[ 4734.303] (--) NVIDIA(GPU-0): DP-1-0
[ 4734.303] (--) NVIDIA(GPU-0): Connector-1
[ 4734.303] (--) NVIDIA(GPU-0): DFP-0: 2660.0 MHz maximum pixel clock
[ 4734.303] (--) NVIDIA(GPU-0):
[ 4734.304] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 4734.304] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 4734.304] (--) NVIDIA(GPU-0): DFP-1: DFP is not internal to notebook
[ 4734.304] (--) NVIDIA(GPU-0): DFP-1 Name Aliases:
[ 4734.304] (--) NVIDIA(GPU-0): DFP
[ 4734.304] (--) NVIDIA(GPU-0): DFP-1
[ 4734.304] (--) NVIDIA(GPU-0): DPY-1
[ 4734.304] (--) NVIDIA(GPU-0): DP-1-1
[ 4734.304] (--) NVIDIA(GPU-0): DP-1-1
[ 4734.304] (--) NVIDIA(GPU-0): Connector-1
[ 4734.304] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 4734.304] (--) NVIDIA(GPU-0):
[ 4734.304] (--) NVIDIA(GPU-0): DFP-2: disconnected
[ 4734.304] (--) NVIDIA(GPU-0): DFP-2: Internal DisplayPort
[ 4734.304] (--) NVIDIA(GPU-0): DFP-2: DFP is not internal to notebook
[ 4734.304] (--) NVIDIA(GPU-0): DFP-2 Name Aliases:
[ 4734.304] (--) NVIDIA(GPU-0): DFP
[ 4734.304] (--) NVIDIA(GPU-0): DFP-2
[ 4734.304] (--) NVIDIA(GPU-0): DPY-2
[ 4734.304] (--) NVIDIA(GPU-0): DP-1-2
[ 4734.304] (--) NVIDIA(GPU-0): DP-1-2
[ 4734.304] (--) NVIDIA(GPU-0): Connector-2
[ 4734.304] (--) NVIDIA(GPU-0): DFP-2: 2660.0 MHz maximum pixel clock
[ 4734.304] (--) NVIDIA(GPU-0):
[ 4734.304] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 4734.304] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 4734.304] (--) NVIDIA(GPU-0): DFP-3: DFP is not internal to notebook
[ 4734.304] (--) NVIDIA(GPU-0): DFP-3 Name Aliases:
[ 4734.304] (--) NVIDIA(GPU-0): DFP
[ 4734.304] (--) NVIDIA(GPU-0): DFP-3
[ 4734.304] (--) NVIDIA(GPU-0): DPY-3
[ 4734.304] (--) NVIDIA(GPU-0): DP-1-3
[ 4734.304] (--) NVIDIA(GPU-0): DP-1-3
[ 4734.304] (--) NVIDIA(GPU-0): Connector-2
[ 4734.304] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 4734.304] (--) NVIDIA(GPU-0):
[ 4734.304] (--) NVIDIA(GPU-0): DFP-4: disconnected
[ 4734.304] (--) NVIDIA(GPU-0): DFP-4: Internal TMDS
[ 4734.304] (--) NVIDIA(GPU-0): DFP-4: DFP is not internal to notebook
[ 4734.304] (--) NVIDIA(GPU-0): DFP-4 Name Aliases:
[ 4734.304] (--) NVIDIA(GPU-0): DFP
[ 4734.304] (--) NVIDIA(GPU-0): DFP-4
[ 4734.304] (--) NVIDIA(GPU-0): DPY-4
[ 4734.304] (--) NVIDIA(GPU-0): HDMI-1-0
[ 4734.304] (--) NVIDIA(GPU-0): HDMI-1-0
[ 4734.304] (--) NVIDIA(GPU-0): Connector-0
[ 4734.304] (--) NVIDIA(GPU-0): DFP-4: 165.0 MHz maximum pixel clock
[ 4734.304] (--) NVIDIA(GPU-0):
[ 4734.306] (II) modeset(0): EDID vendor "BOE", prod id 2125
[ 4734.306] (II) modeset(0): Printing DDC gathered Modelines:
[ 4734.306] (II) modeset(0): Modeline "1920x1080"x0.0 342.05 1920 2028 2076 2080 1080 1090 1100 1142 +hsync -vsync (164.4 kHz eP)
[ 4735.348] (II) NVIDIA(G0): NoScanout X screen configured with resolution 640x480
[ 4735.348] (II) NVIDIA(G0): (default)
[ 4735.349] (II) NVIDIA(G0): Setting mode "NULL"
[ 4735.356] (II) modeset(0): EDID vendor "BOE", prod id 2125
[ 4735.356] (II) modeset(0): Printing DDC gathered Modelines:
[ 4735.356] (II) modeset(0): Modeline "1920x1080"x0.0 342.05 1920 2028 2076 2080 1080 1090 1100 1142 +hsync -vsync (164.4 kHz eP)
// second "setprovideroutputsource"
[ 4797.544] (II) NVIDIA(G0): NoScanout X screen configured with resolution 640x480
[ 4797.544] (II) NVIDIA(G0): (default)
[ 4797.545] (II) NVIDIA(G0): Setting mode "NULL"
[ 4800.254] (EE)
[ 4800.254] (EE) Backtrace:
[ 4800.254] (EE) 0: /usr/bin/X (xorg_backtrace+0xc0) [0x561349d7eed0]
[ 4800.254] (EE) 1: /usr/bin/X (0x561349bc5000+0x1be4bd) [0x561349d834bd]
[ 4800.254] (EE) 2: /usr/lib/libc.so.6 (0x7fcf044e9000+0x3d6a0) [0x7fcf045266a0]
[ 4800.254] (EE) 3: /usr/lib/libc.so.6 (cfree+0x20) [0x7fcf04575310]
[ 4800.254] (EE) 4: /usr/lib/xorg/modules/drivers/nvidia_drv.so (0x7fcf02f48000+0x7af04) [0x7fcf02fc2f04]
[ 4800.254] (EE) 5: /usr/lib/xorg/modules/drivers/nvidia_drv.so (0x7fcf02f48000+0x533209) [0x7fcf0347b209]
[ 4800.254] (EE)
[ 4800.254] (EE) Segmentation fault at address 0x0
[ 4800.254] (EE)
Fatal server error:
[ 4800.254] (EE) Caught signal 11 (Segmentation fault). Server aborting
My theory is that the nvidia X driver wants to free something that it has already freed - I assume - the first time, and depending on what the memory layout happens to be, either glibc can catch it (SIGABRT + double free warning), or it cannot (SIGSEGV + SIGABRT). But I can only guess. Honestly, I cannot understand why the outputs don’t disappear after the xrandr --setprovideroutputsource NVIDIA-G0 0x0
is run.
Very interestingly, one time I traced Xorg with ltrace (ltrace -C -f -S -t -p $(pidof Xorg)
), and for some perculiar reason, the “setprovideroutputsource” command ran without error twice, and the outputs of the nvidia GPU did disappear. Alas, they returned after reboot.
Another that may be interesting: using 440.100 (but not 450.57 or 450.66), nvidia-smi
reports corrupted infoROM after the nvidia GPU goes to sleep, but not before. Someone else who has the exact same laptop that I do confirmed that the same warning is printed using 440.100 on their machine as well (but not with 450.66). (so I hope it was a bug in the 440.100 series drivers)
As far as I see, the kernel driver doesn’t complain about anything, there are no warnings/errors.
I’ll gladly provide more logs/traces if needed. Thank you for reading this far.