Bug 35064

Summary: Segfault in primusrun
Product: Sisyphus Reporter: Ivan A. Melnikov <iv>
Component: MesaAssignee: Valery Inozemtsev <shrek>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: rider, shrek
Version: unstable   
Hardware: all   
OS: Linux   

Description Ivan A. Melnikov 2018-06-21 09:53:54 MSK
После сегодняшнего обновления поймал segfault на primusrun. На первый взгляд, то же самое, что и

* https://bugs.freedesktop.org/show_bug.cgi?id=106910
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901701

Система обновлена до сегодняшнего Сизифа, используется XFCE без композитинга.
Железо -- Dell Inspiron 15-7577 с подключенным через HDMI монитором.

$ lspci  | egrep 'VGA|NV'
00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04)
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile] (rev a1)

$ uname -a
Linux titan.localdomain 4.16.16-un-def-alt1 #1 SMP PREEMPT Tue Jun 19 13:23:54 UTC 2018 x86_64 GNU/Linux

$ rpm -qa | grep intel
xorg-drv-intel-2.99.917-alt7.x86_64
xorg-dri-intel-18.1.1-alt1.S1.x86_64
libva-driver-intel-1.8.3-alt2.S1.x86_64
xorg-dri-intel-debuginfo-18.1.1-alt1.S1.x86_64
firmware-intel-ucode-5-alt2.20180425.noarch


На встроенной интеловской видеокарте всё работает, на примусе работало раньше (дня 2 назад), а теперь вот так:

$ primusrun glxgears
Segmentation fault

Подробности:

$ primusrun gdb glxgears
GNU gdb (GDB) 7.9-alt4 (ALT)
[... skip ...]
Reading symbols from glxgears...Reading symbols from /usr/lib/debug/usr/bin/glxgears.debug...done.
done.
(gdb) run -info
Starting program: /usr/bin/glxgears -info
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
GL_RENDERER   = GeForce GTX 1050 Ti/PCIe/SSE2
GL_VERSION    = 4.6.0 NVIDIA 390.67
GL_VENDOR     = NVIDIA Corporation
GL_EXTENSIONS = [... skip ...]
[New Thread 0x7fffef0ef700 (LWP 3723)]
[New Thread 0x7fffedaf0700 (LWP 3725)]
[New Thread 0x7fffee8ee700 (LWP 3724)]
[New Thread 0x7fffeffa1700 (LWP 3722)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffef0ef700 (LWP 3723)]
0x00007ffff0e59a17 in do_blit_drawpixels (pixels=0x0, unpack=0x7fffe0155df8, type=5121, format=32993, height=1080, width=1920, y=0, x=0, ctx=0x7fffe014c870) at intel_pixel_draw.c:80
80         mesa_format dst_format = irb->mt->format;
(gdb) bt
#0  0x00007ffff0e59a17 in do_blit_drawpixels (pixels=0x0, unpack=0x7fffe0155df8, type=5121, format=32993, height=1080, width=1920, y=0, x=0, ctx=0x7fffe014c870) at intel_pixel_draw.c:80
#1  intelDrawPixels (ctx=0x7fffe014c870, x=0, y=0, width=1920, height=1080, format=32993, type=5121, unpack=0x7fffe0155df8, pixels=0x0) at intel_pixel_draw.c:167
#2  0x00007ffff0aad1a3 in _mesa_DrawPixels (width=1920, height=1080, format=32993, type=5121, pixels=0x0) at main/drawpix.c:162
#3  0x00007ffff787e7fe in test_drawpixels_fast (dconfig=<optimized out>, ctx=0x7fffe0013580, dpy=0x7fffe0000b20) at libglfork.cpp:362
#4  display_work (vd=<optimized out>) at libglfork.cpp:402
#5  0x00007ffff6ac532a in start_thread (arg=0x7fffef0ef700) at pthread_create.c:463
#6  0x00007ffff71fdfaf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Пока ничего не пробовал с этим сделать, рекомендации приветсвуются. Даже не уверен, что виновата именно mesa, но поскольку дебиановский баг на ней и backtrace ведёт тоже в неё, пусть и это пока повисит здесь.
Comment 1 Ivan A. Melnikov 2018-06-27 15:24:02 MSK
Пробовал разные ядра и версии драйверов nvidia, ничего не помогает. Помогло откатить до 18.1.0 (из архива Сизифа) следующие пакеты:

glxgears-18.1.0-alt1.S1.x86_64.rpm
glxinfo-18.1.0-alt1.S1.x86_64.rpm
libEGL-18.1.0-alt1.S1.x86_64.rpm
libgbm-18.1.0-alt1.S1.x86_64.rpm
libGL-18.1.0-alt1.S1.x86_64.rpm
xorg-dri-intel-18.1.0-alt1.S1.x86_64.rpm
xorg-dri-swrast-18.1.0-alt1.S1.x86_64.rpm
Comment 2 Anton Farygin 2018-11-01 10:55:39 MSK
А что сейчас на свежем Sisyphus ?
Там primusrun не нужен совсем.
Comment 3 Ivan A. Melnikov 2018-11-01 11:02:06 MSK
(In reply to comment #2)
> А что сейчас на свежем Sisyphus ?

До прилёта Xorg с libglvnd некоторое время вроде работало. Я нормально не тестировал правда, только glxgears и запускал.

Теперь primusrun не работает, потому что у него неправильный путь к libGL:

$ primusrun glxgears
primus: fatal: failed to load any of the libraries: /usr/$LIB/X11/libGL.so.1
/usr/$LIB/X11/libGL.so.1: cannot open shared object file: No such file or directory

> Там primusrun не нужен совсем.

А что нужно? Без ничего 3d работает на интеловской графике, optirun как был, так и остаётся нерабочий на моём ноуте.
Comment 4 Anton Farygin 2018-11-01 11:51:52 MSK
glvnd сама опеределяет каким приложениям на какой графике работать. почитайте описание её архитектуры