Bug 2052605

Summary: Xorg segfault when attaching an external display with hybrid graphics and the NVIDIA proprietary driver
Product: Red Hat Enterprise Linux 9 Reporter: Olivier Fourdan <ofourdan>
Component: xorg-x11-serverAssignee: Olivier Fourdan <ofourdan>
Status: CLOSED ERRATA QA Contact: Peter Kopec <pekopec>
Severity: urgent Docs Contact:
Priority: high    
Version: 9.0CC: tpelka
Target Milestone: rcKeywords: Triaged
Target Release: ---Flags: pm-rhel: mirror+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: xorg-x11-server-1.20.11-10.el9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-05-17 12:53:07 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Olivier Fourdan 2022-02-09 16:23:58 UTC
Description of problem:

On a system with hybrid graphics, using the NVIDIA proprietary driver for the discrete GPU, attaching an external display wired to the discrete GPU will cause Xorg to crash.

Version-Release number of selected component (if applicable):

xorg-x11-server-Xorg-1.20.11-9.el9.x86_64

How reproducible:

Always

Steps to Reproduce:
1. Install the NVIDIA proprietary driver on a hybrid graphcs laptop
2. Connect an externa monitor

Actual results:

Xorg segfaults in msSharePixmapBacking() :

(gdb) bt
#0  in __pthread_kill_implementation () at /lib64/libc.so.6
#1  in raise () at /lib64/libc.so.6
#2  in abort () at /lib64/libc.so.6
#3  in OsAbort () at ../../os/utils.c:1351
#4  in AbortServer () at ../../os/log.c:872
#5  FatalError (f=f@entry=0x56552a313658 "Caught signal %d (%s). Server aborting\n") at ../../os/log.c:1010
#6  in OsSigHandler (unused=<optimized out>, sip=0x7ffe4e61f2f0, signo=11) at ../../os/osinit.c:156
#7  OsSigHandler (signo=11, sip=0x7ffe4e61f2f0, unused=<optimized out>) at ../../os/osinit.c:110
#8  in <signal handler called> () at /lib64/libc.so.6
#9  0x0000000000000000 in  ()
#10 in msSharePixmapBacking (ppix=0x56552c0db940, screen=<optimized out>, handle=0x7ffe4e61fed0)
    at /usr/src/debug/xorg-x11-server-1.20.14-0.1test.el9.x86_64/hw/xfree86/drivers/modesetting/driver.c:1472
#11 in PixmapShareToSlave (pixmap=0x56552c0db940, slave=0x56552c86cbe0) at ../../dix/pixmap.c:151
#12 in rrCreateSharedPixmap (x=1920, y=0, rotation=<optimized out>, depth=24, height=2160, width=3840, master=0x56552c22a000, crtc=0x56552ca971e0)
    at ../../randr/rrcrtc.c:441
#13 rrSetupPixmapSharing (outputs=0x56552d555f90, numOutputs=1, sync=1, rotation=<optimized out>, y=0, x=1920, height=2160, width=3840, crtc=0x56552ca971e0) at ../../randr/rrcrtc.c:538
#14 RRCrtcSet (crtc=0x56552ca971e0, mode=0x56552d53ad10, x=1920, y=0, rotation=<optimized out>, numOutputs=numOutputs@entry=1, outputs=0x56552d555f90) at ../../randr/rrcrtc.c:773
#15 in ProcRRSetCrtcConfig (client=0x56552c0c6570) at ../../randr/rrcrtc.c:1459
#16 0x00007ff2c21a45d2 in  () at /usr/lib64/xorg/modules/drivers/nvidia_drv.so
[…]

Expected results:

No crash

Additional info:

This is fixed upstream with https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/366

The backport (trivial) is ready and I already verified it fixes the issue.

This is pretty critical because without this, hybrid graphics support with Xorg is pretty broken.

Comment 2 Peter Kopec 2022-02-10 19:52:29 UTC
Connecting and disconnecting a monitor on hybrid P53 works with updated package.

Comment 7 Peter Kopec 2022-02-11 13:09:04 UTC
based on c2 moving to verified

Comment 9 errata-xmlrpc 2022-05-17 12:53:07 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new packages: xorg-x11-server), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:2414