server 21.1: present: Crash in 'present_scmd_get_crtc' and 'present_flush' (NVIDIA 495.46)
Xserver crashes (NVIDIA 495.46) when compositor uses present extension. It happens on 21.1.2, not tested with previous versions.
Backtrace 1:
#0 0x0000000000000000 in ()
#1 0x000055a871063d7d in present_scmd_get_crtc (screen_priv=0x55a872c82260, window=0x55a872e453e0) at ../xorg-server-21.1.2/present/present_scmd.c:161
#2 0x000055a8710607ee in present_get_crtc (window=0x55a872e453e0) at ../xorg-server-21.1.2/present/present.c:52
#3 0x000055a871064fc4 in present_scmd_pixmap (window=0x55a872e453e0, pixmap=0x55a872e6b9a0, serial=0, valid=0x0, update=0x55a872e6b980, x_off=0, y_off=0, target_crtc=0x0, wait_fence=0x0, idle_fence=0x0, options=0, target_window_msc=0, divisor=1, remainder=0, notifies=0x0, num_notifies=0) at ../xorg-server-21.1.2/present/present_scmd.c:699
#4 0x000055a871060cc3 in present_pixmap (window=0x55a872e453e0, pixmap=0x55a872e6b9a0, serial=0, valid=0x0, update=0x55a872e6b980, x_off=0, y_off=0, target_crtc=0x0, wait_fence=0x0, idle_fence=0x0, options=0, window_msc=0, divisor=1, remainder=0, notifies=0x0, num_notifies=0) at ../xorg-server-21.1.2/present/present.c:243
#5 0x000055a871062eb6 in proc_present_pixmap (client=0x55a872afb9f0) at ../xorg-server-21.1.2/present/present_request.c:146
#6 0x000055a8710632b8 in proc_present_dispatch (client=0x55a872afb9f0) at ../xorg-server-21.1.2/present/present_request.c:257
#7 0x000055a870fc8d9c in Dispatch () at ../xorg-server-21.1.2/dix/dispatch.c:551
#8 0x000055a870fd8191 in dix_main (argc=1, argv=0x7ffd346bead8, envp=0x7ffd346beae8) at ../xorg-server-21.1.2/dix/main.c:272
#9 0x000055a8711c1b27 in main (argc=1, argv=0x7ffd346bead8, envp=0x7ffd346beae8) at ../xorg-server-21.1.2/dix/stubmain.c:34
Backtrace 2:
#0 0x0000000000000000 in ()
#1 0x00005645b5362e98 in present_flush (window=0x5645b5bd7720) at ../xorg-server-21.1.2/present/present_scmd.c:199
#2 0x00005645b5360b5a in present_execute_copy (vblank=0x5645b5b77620, crtc_msc=58191) at ../xorg-server-21.1.2/present/present_execute.c:88
#3 0x00005645b5363d59 in present_execute (vblank=0x5645b5b77620, ust=969811316, crtc_msc=58191) at ../xorg-server-21.1.2/present/present_scmd.c:622
#4 0x00005645b536350f in present_event_notify (event_id=1, ust=969811316, msc=58191) at ../xorg-server-21.1.2/present/present_scmd.c:379
#5 0x00005645b5360ef0 in present_fake_notify (screen=0x5645b5df4a80, event_id=1) at ../xorg-server-21.1.2/present/present_fake.c:51
#6 0x00005645b5360f3d in present_fake_do_timer (timer=0x5645b5b77710, time=969811, arg=0x5645b5b776e0) at ../xorg-server-21.1.2/present/present_fake.c:61
#7 0x00005645b540ba75 in DoTimer (timer=0x5645b5b77710, now=969811) at ../xorg-server-21.1.2/os/WaitFor.c:276
#8 0x00005645b540bad9 in DoTimers (now=969811) at ../xorg-server-21.1.2/os/WaitFor.c:290
#9 0x00005645b540b7b5 in check_timers () at ../xorg-server-21.1.2/os/WaitFor.c:133
#10 0x00005645b540b84a in WaitForSomething (are_ready=0) at ../xorg-server-21.1.2/os/WaitFor.c:195
#11 0x00005645b52c7bc3 in Dispatch () at ../xorg-server-21.1.2/dix/dispatch.c:492
#12 0x00005645b52d7191 in dix_main (argc=1, argv=0x7ffe50f44968, envp=0x7ffe50f44978) at ../xorg-server-21.1.2/dix/main.c:272
#13 0x00005645b54c0b38 in main (argc=1, argv=0x7ffe50f44968, envp=0x7ffe50f44978) at ../xorg-server-21.1.2/dix/stubmain.c:34
Attached diff fixes the crash: present-crash-fix.diff
Edited by Povilas Kanapickas