Bug 107230

Summary: Latest Feral games Rise of Tomb Rider and F1 2017 which use Vulcan API not work under Xwayland but work under Xorg.
Product: Wayland Reporter: mikhail.v.gavrilov
Component: XWaylandAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED DUPLICATE QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: rise of tomb rider strace
rise of tomb rider file descriptors
rise of tomb rider backtrace
yet another rise of tomb rider backtrace

Description mikhail.v.gavrilov 2018-07-14 21:24:26 UTC
Latest Feral games Rise of Tomb Rider and F1 2017 which use Vulcan API not work under Xwayland but work under Xorg.

# rpm -qa | grep Xwayland
xorg-x11-server-Xwayland-1.20.0-4.fc29.x86_64
xorg-x11-server-Xwayland-debuginfo-1.20.0-4.fc29.x86_64

Expected result:
This games must works both under Xwayland and Xorg.
Xwayland is an transparently Xorg replacements isn't it?


$ inxi -bM
System:    Host: localhost.localdomain Kernel: 4.18.0-0.rc4.git3.1.local.fc29.x86_64 x86_64 bits: 64 
           Desktop: Gnome 3.29.2 Distro: Fedora release 29 (Rawhide) 
Machine:   Type: Desktop System: Gigabyte product: Z87M-D3H v: N/A serial: <root required> 
           Mobo: Gigabyte model: Z87M-D3H serial: <root required> UEFI: American Megatrends v: F11 
           date: 08/12/2014 
CPU:       Quad Core: Intel Core i7-4770 type: MT MCP speed: 3691 MHz min/max: 800/3900 MHz 
Graphics:  Card-1: Advanced Micro Devices [AMD/ATI] Vega 10 XT [Radeon RX Vega 64] driver: amdgpu v: kernel 
           Display: x11 server: Fedora Project X.org 11.0 driver: fbdev,modesetting,vesa 
           resolution: 3840x2160~60Hz 
           OpenGL: 
           renderer: Radeon RX Vega (VEGA10 DRM 3.26.0 4.18.0-0.rc4.git3.1.local.fc29.x86_64 LLVM 6.0.1) 
           v: 4.5 Mesa 18.1.3 
Network:   Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169 
Drives:    HDD Total Size: 14.77 TiB used: 4.07 TiB (27.5%) 
Info:      Processes: 420 Uptime: 6h 28m Memory: 31.29 GiB used: 18.76 GiB (59.9%) Shell: bash inxi: 3.0.15
Comment 1 Michel Dänzer 2018-07-16 09:50:21 UTC
What does "does not work" mean exactly? What are the symptoms?
Comment 2 mikhail.v.gavrilov 2018-07-16 20:54:30 UTC
(In reply to Michel Dänzer from comment #1)
> What does "does not work" mean exactly? What are the symptoms?

It means both games stuck at initial splash screen​ when I launched it under Wayland session.​

Demonstration: https://youtu.be/BPDYm_ifq8g

My short investigation:

strace show follow log:
01:33:13.405474 select(44, [43], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.405594 futex(0x7fdafc000e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1531773193, tv_nsec=414365053}, 0xffffffff) = -1 ETIMEDOUT (Connection timed out)
01:33:13.414637 select(12, [11], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.414952 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.415161 readv(52, [{iov_base="\t\1M[\0\0\0\0HL\6\0\0\0\0\0\3\0\3\0\210\0\0\0\t\1M[\0\0\0\0"..., iov_len=768}], 1) = 72
01:33:13.415368 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.415451 readv(52, [{iov_base=0x7ffeda649f50, iov_len=768}], 1) = -1 EAGAIN (Resource temporarily unavailable)
01:33:13.415532 select(44, [43], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.415636 futex(0x7fdafc000e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1531773193, tv_nsec=424591064}, 0xffffffff) = -1 ETIMEDOUT (Connection timed out)
01:33:13.424950 select(12, [11], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.425241 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.425469 readv(52, [{iov_base="\t\1M[\0\0\0\0\303[\6\0\0\0\0\0\3\0\3\0\207\0\0\0\t\1M[\0\0\0\0"..., iov_len=768}], 1) = 72
01:33:13.425644 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.425724 readv(52, [{iov_base=0x7ffeda649f50, iov_len=768}], 1) = -1 EAGAIN (Resource temporarily unavailable)
01:33:13.425806 select(44, [43], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.425894 futex(0x7fdafc000e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1531773193, tv_nsec=434900045}, 0xffffffff) = -1 ETIMEDOUT (Connection timed out)
01:33:13.435054 select(12, [11], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.435184 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.435308 readv(52, [{iov_base="\t\1M[\0\0\0\0007\232\6\0\0\0\0\0\3\0\0\0}\0\0\0\t\1M[\0\0\0\0"..., iov_len=768}], 1) = 72
01:33:13.435466 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.435579 readv(52, [{iov_base=0x7ffeda649f50, iov_len=768}], 1) = -1 EAGAIN (Resource temporarily unavailable)
01:33:13.435691 select(44, [43], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.435784 futex(0x7fdafc000e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1531773193, tv_nsec=445029973}, 0xffffffff) = 0
01:33:13.443004 futex(0x7fdafc000e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1531773193, tv_nsec=445029973}, 0xffffffff) = -1 ETIMEDOUT (Connection timed out)
01:33:13.445267 select(12, [11], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.445492 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.445690 readv(52, [{iov_base="\t\1M[\0\0\0\0\352\251\6\0\0\0\0\0\3\0\0\0~\0\0\0\t\1M[\0\0\0\0"..., iov_len=768}], 1) = 120
01:33:13.445880 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.445997 readv(52, [{iov_base=0x7ffeda649f50, iov_len=768}], 1) = -1 EAGAIN (Resource temporarily unavailable)
01:33:13.446118 select(44, [43], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.446228 futex(0x7fdafc000e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1531773193, tv_nsec=455219984}, 0xffffffff) = -1 ETIMEDOUT (Connection timed out)
01:33:13.455491 select(12, [11], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.455767 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.455941 readv(52, [{iov_base="\t\1M[\0\0\0\0\303\330\6\0\0\0\0\0\3\0\0\0}\0\0\0\t\1M[\0\0\0\0"..., iov_len=768}], 1) = 120
01:33:13.456093 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.456184 readv(52, [{iov_base=0x7ffeda649f50, iov_len=768}], 1) = -1 EAGAIN (Resource temporarily unavailable)
01:33:13.456288 select(44, [43], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.456399 futex(0x7fdafc000e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1531773193, tv_nsec=465440034}, 0xffffffff) = -1 ETIMEDOUT (Connection timed out)
01:33:13.465646 select(12, [11], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.465884 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.465980 readv(52, [{iov_base="\t\1M[\0\0\0\0\26\370\6\0\0\0\0\0\3\0\3\0\207\0\0\0\t\1M[\0\0\0\0"..., iov_len=768}], 1) = 216
01:33:13.466150 fcntl(52, F_GETFL)      = 0x8800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
01:33:13.466236 readv(52, [{iov_base=0x7ffeda649f50, iov_len=768}], 1) = -1 EAGAIN (Resource temporarily unavailable)
01:33:13.466312 select(44, [43], NULL, NULL, {tv_sec=0, tv_usec=0}) = 0 (Timeout)
01:33:13.466417 futex(0x7fdafc000e40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1531773193, tv_nsec=475615024}, 0xffffffffstrace: Process 3174 detached
^C <detached ...>


I was interested in fact that the file descriptor 52 is EAGAIN (Resource temporarily unavailable)

ok, I looked who is fd 52

$ ls -la /proc/3174/fd
total 0
lr-x------. 1 mikhail mikhail 64 Jul 17 01:33 5 -> /home/mikhail/.steam/steam.pipe
lr-x------. 1 mikhail mikhail 64 Jul 17 01:33 50 -> '/home/mikhail/.local/share/Steam/steamapps/common/Rise of the Tomb Raider/bin/icudtl.dat'
lr-x------. 1 mikhail mikhail 64 Jul 17 01:33 51 -> '/home/mikhail/.local/share/Steam/steamapps/common/Rise of the Tomb Raider/bin/natives_blob.bin'
lr-x------. 1 mikhail mikhail 64 Jul 17 01:33 52 -> /dev/input/event4
lr-x------. 1 mikhail mikhail 64 Jul 17 01:33 53 -> '/home/mikhail/.local/share/Steam/steamapps/common/Rise of the Tomb Raider/bin/snapshot_blob.bin'
lr-x------. 1 mikhail mikhail 64 Jul 17 01:33 54 -> '/home/mikhail/.local/share/Steam/steamapps/common/Rise of the Tomb Raider/share/data/bigfile.000.tiger'
lr-x------. 1 mikhail mikhail 64 Jul 17 01:33 55 -> '/home/mikhail/.local/share/Steam/steamapps/common/Rise of the Tomb Raider/share/data/bigfile.000.tiger'

hmmm this is /dev/input/event4

And then I do not know the specifics of the work whether this file should be available or not.

$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ xwayland-pointer:15                     	id=6	[slave  pointer  (2)]
⎜   ↳ xwayland-relative-pointer:15            	id=7	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ xwayland-keyboard:15                    	id=8	[slave  keyboard (3)]
Comment 3 mikhail.v.gavrilov 2018-07-16 20:56:31 UTC
Created attachment 140652 [details]
rise of tomb rider strace
Comment 4 mikhail.v.gavrilov 2018-07-16 20:57:55 UTC
Created attachment 140653 [details]
rise of tomb rider file descriptors
Comment 5 Michel Dänzer 2018-07-17 08:46:58 UTC
Please attach gdb to the hung game process and attach the output of

 thread apply all bt full

here.
Comment 6 mikhail.v.gavrilov 2018-07-17 09:01:30 UTC
Created attachment 140662 [details]
rise of tomb rider backtrace
Comment 7 mikhail.v.gavrilov 2018-07-17 09:35:05 UTC
Created attachment 140663 [details]
yet another rise of tomb rider backtrace
Comment 8 mikhail.v.gavrilov 2018-10-27 12:59:26 UTC
This magic patch https://gitlab.freedesktop.org/xorg/xserver/merge_requests/48 fix this.
Comment 9 Michel Dänzer 2018-10-27 14:09:27 UTC
Thanks for the report and follow-up, resolving per comment 8.

*** This bug has been marked as a duplicate of bug 106713 ***

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.