Дивний Segmentation Fault на Debian Sid та Qt

Може хто тут допоможе?

Мій баг-репорт:

bugs.debian.org/...​bugreport.cgi?bug=1031489

Стисло роскажу у чому річ.

Коли встановлюються закриті nvidia 340.108 драйвера на Debian Sid то майже увесь Qt GUI софт видає Segmentation Fault при запуску його. На відкритих nouveau такого немає і усе стартує ок.

Але1

мені потрібні закритиі драйвера. Та Debian Sid.

Але2

1. Якщо старувати цей qt софт у gdb він стартує без помилок і працює як слід.

2. Усе працює без помилок у Fedora, OpenSuse, Ubuntu на цих же самих nvidia 340.108 драйверах

Увага питання:

Чому усе працює через gdb та у інших дистрибутивах якщо драйвер один і цей самий але не працює тіки у Debian Sid?

ps інших драйверів під цю відеокарту немає їх підтримуе коммюніті — випускає патчі під нові ядра

ppd set disable-randomization off у gdb не допомогає викликати segfault для трейсингу помилки

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

временное решение

приложение использует
libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0×00007f0e27e00000)
pastebin.com/raw/qNyjpFsv
но загружает
/usr/lib/x86_64-linux-gnu/nvidia/legacy-340xx/libGL.so.1
и падает
если добавить єто
export QT_XCB_GL_INTEGRATION=none
export QT_OPENGL=software
и запусткать так(не через билиотеку закрытого драйвера)
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGL.so qbittorrent
то все работает и не падает!)

А coredump ввімкнути, можливо, там щось цікаве буде ?)

Обычно разные таймауты под дебаггером и релизом. Под дебаггером бегает медленнее, и поэтому кто-то кому-то не успевает помешать работать.

Спасибо! А можно глубже отдебажить и докопаться до сути проблемы? Или это очень сложно?
Например искуственно замедлить программу и посмотреть как будет) Я понимаю что я говорю как профан но мне жутко интересно докопаться до сути в данном случае.

Думаю, нужны исходники того, что падает.

падает исключительно gui qt софт который использует qt 5.15.4 и выше и только в сочетании с этим драйвером. там что то с GL библиотеками драйвера связано, но на Федоре все работает а на Сиде Дебинан нет.

чем отличается запуск кода через дебаггинг от обычного запуска?
так как все работает если запускать через разные дебаггеры

а что єто значит?
“One of the most common problems — debug mode initializes all vars to 0, release mode — leaves garbage in all not explicetely initialized variables.”

Это значит, что если там где-то статическая переменная с указателем, и есть два потока: один ее инициализирует, а другой — использует, если она ненулевая, то под дебаггером не упадет, а в релизе поток-читатель может прочесть мусор до того, как писатель запишет правильное значение, и при доступе к мусору будет креш.

Спасибо большое! Как все сложно для простых нубов)
Узнать бы отчего все это работает на остальных дистрах и не работает только под Сидом при одних и тех же компонентах(система, драйвер, Qt)? Может ли программа выполняться как то по особенному на одной системе и по другому на другой если софт один и тот же? Тот же драйвер, тот же Кутэ, теже ядра.

А точно софт один и тот же?
Точно в драйвере нет где-то бранча в зависимости от чего-то в окружении?
Точно операционка где-то в деталях не использует драйвер по-другому?

Драйвер точно один и тот же. Qt от 5.15.4 и выше, уже не работает с установленным этим закрытым драйвером. НО без закрытого драйвера используя нуво(открытый) все работает в любых сочетаниях. НО это только на Сиде. На Федоре все работает с любыми драйверами и этим же Qt.

И еще такой вопрос. Нельзя ли как-то предопределять эти переменные заранее перед запуском программы как это делает дебаггер? Спасибо.

Может в LD_PRELOAD какой-то мусор?
Попробуй собрать core dump и посмотреть где краш

Спасибо за отклик!
segfault без краша ядра
i.stack.imgur.com/OTV6q.png
через env смотрел, переменной LD_PRELOAD нет
подсталял вручную вот результат
pastebin.com/raw/jCgPGPkJ

Підписатись на коментарі