LINUX.ORG.RU

Сломалось воспроизведение видео

 , , ,


0

2

После обновления все средства воспроизведения видео отказали.

Mplayer крашится. Никаких сообщений, просто segmentation fault.

ffmpeg также крашится при попытке обработать видео (например обрезать) с тем же сообщением segmentation fault без подробностей.

vlc иногда (рандомно) воспроизводит видео. При этом выхлоп в консольке такой:

$ vlc
VLC media player 3.0.18 Vetinari (revision 3.0.13-8-g41878ff4f2)
[000055badd04e520] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
[000055badd103b90] qt interface error: Unable to load extensions module
[000055badd0ce700] main playlist: playlist is empty
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
libpng warning: iCCP: known incorrect sRGB profile
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
libpng warning: iCCP: known incorrect sRGB profile
uint DBusMenuExporterDBus::GetLayout(int, int, const QStringList&, DBusMenuLayoutItem&): Condition failed: menu
uint DBusMenuExporterDBus::GetLayout(int, int, const QStringList&, DBusMenuLayoutItem&): Condition failed: menu
uint DBusMenuExporterDBus::GetLayout(int, int, const QStringList&, DBusMenuLayoutItem&): Condition failed: menu
uint DBusMenuExporterDBus::GetLayout(int, int, const QStringList&, DBusMenuLayoutItem&): Condition failed: menu

Когда vlc крашится, то выхлоп такой:

$ vlc
VLC media player 3.0.18 Vetinari (revision 3.0.13-8-g41878ff4f2)
[0000557311007520] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
[00005573110bbfe0] qt interface error: Unable to load extensions module
[0000557311087700] main playlist: playlist is empty
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
libpng warning: iCCP: known incorrect sRGB profile
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-hevioso'
libpng warning: iCCP: known incorrect sRGB profile
Segmentation fault

Из причастных к видео обновлялся ffmpeg c 6.0-r6 до 6.0-r9. Откатиться на 6.0-r6 не получилось - его удалили из дерева. Пробовал откатиться на 4.4.4-r6 и 6.0-r10 (с пересборкой зависящих от него mplayer, vlc, pipewire, kpipewire) всё также видео крашится.

Причем на другом десктопе после обновления видео работает. И версии ffmpeg и плееров такие же.

Что можно предпринять? Может это не ffmpeg виноват?

★★★★

Последнее исправление: Chord (всего исправлений: 1)
Ответ на: комментарий от d00fy

Последний раз я запускал дебаггер лет 16 или 17 назад, и было это под виндой. Сейчас изучать всю это с нуля под линукс - уйдет сто лет. Я столько не проживу. А хотелось ещё видео посмотреть в этой жизни.

Chord ★★★★
() автор топика
Ответ на: комментарий от firkax
$ gdb --args /usr/bin/vlc ssstwitter.com_1695514504320.mp4 
GNU gdb (Gentoo 13.2 vanilla) 13.2
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/vlc...
(No debugging symbols found in /usr/bin/vlc)
(gdb) run
Starting program: /usr/bin/vlc ssstwitter.com_1695514504320.mp4
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
VLC media player 3.0.18 Vetinari (revision 3.0.13-8-g41878ff4f2)
[New Thread 0x7ffff76d16c0 (LWP 17776)]
[New Thread 0x7ffff75d06c0 (LWP 17777)]
[New Thread 0x7ffff74cf6c0 (LWP 17778)]
[New Thread 0x7ffff73c56c0 (LWP 17779)]
[000055555555c520] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[Thread 0x7ffff73c56c0 (LWP 17779) exited]
[New Thread 0x7ffff73c56c0 (LWP 17780)]
[New Thread 0x7ffff4a4d6c0 (LWP 17781)]
[New Thread 0x7ffff494c6c0 (LWP 17782)]
[Thread 0x7ffff4a4d6c0 (LWP 17781) exited]
[New Thread 0x7fffe616f6c0 (LWP 17785)]
[New Thread 0x7fffe596e6c0 (LWP 17786)]
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-user'
[New Thread 0x7fffd59116c0 (LWP 17787)]
[New Thread 0x7fffd51106c0 (LWP 17788)]
[New Thread 0x7fffd490f6c0 (LWP 17789)]
[New Thread 0x7fffcffff6c0 (LWP 17790)]
[New Thread 0x7fffcf7fe6c0 (LWP 17791)]
[New Thread 0x7fffceffd6c0 (LWP 17792)]
[New Thread 0x7fffce7fc6c0 (LWP 17793)]
[New Thread 0x7fffcdffb6c0 (LWP 17794)]
[New Thread 0x7fffcd7fa6c0 (LWP 17795)]
[New Thread 0x7fffccff96c0 (LWP 17796)]
[New Thread 0x7fffabfff6c0 (LWP 17797)]
[New Thread 0x7fffab7fe6c0 (LWP 17798)]
[Thread 0x7fffab7fe6c0 (LWP 17798) exited]
[Thread 0x7fffabfff6c0 (LWP 17797) exited]
[New Thread 0x7fffabfff6c0 (LWP 17799)]
[New Thread 0x7fffab7fe6c0 (LWP 17800)]
[New Thread 0x7fffaaffd6c0 (LWP 17801)]
[New Thread 0x7fffaa7fc6c0 (LWP 17802)]
[0000555555613020] qt interface error: Unable to load extensions module
[New Thread 0x7ffff4a4d6c0 (LWP 17803)]
[New Thread 0x7fffcc3476c0 (LWP 17804)]
[Thread 0x7fffcc3476c0 (LWP 17804) exited]
[New Thread 0x7fff87d566c0 (LWP 17805)]
[New Thread 0x7fff875556c0 (LWP 17806)]
[New Thread 0x7fff86d546c0 (LWP 17807)]
[New Thread 0x7fff865536c0 (LWP 17808)]
[New Thread 0x7fff85d526c0 (LWP 17809)]
[New Thread 0x7fff855516c0 (LWP 17810)]
[New Thread 0x7fffcc3476c0 (LWP 17811)]
[New Thread 0x7fffa81256c0 (LWP 17812)]

Thread 36 "vlc" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffa81256c0 (LWP 17812)]
0x00007fffa8610286 in ?? () from /usr/lib64/libavcodec.so.60
(gdb) bt
#0  0x00007fffa8610286 in ?? () from /usr/lib64/libavcodec.so.60
#1  0x00007fffa861209c in ?? () from /usr/lib64/libavcodec.so.60
#2  0x00007fffa8613ddf in ?? () from /usr/lib64/libavcodec.so.60
#3  0x00007fffa87203c8 in ?? () from /usr/lib64/libavcodec.so.60
#4  0x00007fffa8721280 in avcodec_send_packet () from /usr/lib64/libavcodec.so.60
#5  0x00007fffcc228c19 in ?? () from /usr/lib64/vlc/plugins/codec/libavcodec_plugin.so
#6  0x00007ffff7d19b97 in ?? () from /usr/lib64/libvlccore.so.9
#7  0x00007ffff7d197b1 in ?? () from /usr/lib64/libvlccore.so.9
#8  0x00007ffff7d19f02 in ?? () from /usr/lib64/libvlccore.so.9
#9  0x00007ffff7e41b9d in ?? () from /lib64/libc.so.6
#10 0x00007ffff7ec208c in ?? () from /lib64/libc.so.6
(gdb) q
A debugging session is active.

        Inferior 1 [process 17773] will be killed.

Quit anyway? (y or n) y

/usr/lib64/libavcodec.so.60 виноват? Если так, то это ffmpeg, его либа. Ну я его несколько раз пересобирал.

media-video/ffmpeg-6.0-r9::gentoo was built with the following:
USE="X alsa bzip2 dav1d encode gnutls gpl iconv lcms mp3 network opengl postproc sdl theora threads truetype vorbis vulkan x264 zlib (-amf) -amr -amrenc (-appkit) -bluray -bs2b -cdio -chromaprint -chromium -codec2 -cpudetection (-cuda) -debug -doc -fdk -flite -fontconfig -frei0r -fribidi -gcrypt -gme -gmp -gsm -hardcoded-tables -iec61883 -ieee1394 -jack -jpeg2k -jpegxl -kvazaar -ladspa -libaom -libaribb24 -libass -libcaca -libdrm -libilbc -libplacebo -librtmp -libsoxr -libtesseract -libv4l -libxml2 -lv2 -lzma (-mipsdspr1) (-mipsdspr2) (-mipsfpu) (-mmal) -modplug -nvenc -openal -opencl -openh264 -openssl -opus -oss -pic -pulseaudio (-qsv) -rav1e -rubberband -samba -snappy -sndio -speex -srt -ssh -static-libs -svg -svt-av1 -test -twolame -v4l -vaapi -vdpau -verify-sig -vidstab (-vmaf) -vpx -webp -x265 -xvid -zeromq -zimg -zvbi" CPU_FLAGS_X86="mmx mmxext sse sse2 -3dnow -3dnowext -aes -avx -avx2 -fma3 -fma4 -sse3 -sse4_1 -sse4_2 -ssse3 -xop" FFTOOLS="aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart sidxindex trasher"
FEATURES="buildpkg-live ebuild-locks assume-digests parallel-fetch qa-unresolved-soname-deps userfetch ipc-sandbox binpkg-multi-instance unmerge-orphans multilib-strict unknown-features-warn distlocks preserve-libs binpkg-dostrip usersandbox xattr strict binpkg-logs news protect-owned sandbox network-sandbox unmerge-logs pid-sandbox userpriv sfperms config-protect-if-modified binpkg-docompress fixlafiles usersync merge-sync"

Причем один и тот же видеофайл может рандомно и вызвать сегфолт, и нормально воспроизвести.

Chord ★★★★
() автор топика
Последнее исправление: Chord (всего исправлений: 1)
Ответ на: комментарий от Chord

А вот когда mplayer пробую:

gdb --args /usr/bin/mplayer ssstwitter.com_1695514504320.mp4 
GNU gdb (Gentoo 13.2 vanilla) 13.2
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/mplayer...
(No debugging symbols found in /usr/bin/mplayer)
(gdb) run
Starting program: /usr/bin/mplayer ssstwitter.com_1695514504320.mp4
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
MPlayer SVN-r38428 (Gentoo)-13 (C) 2000-2023 MPlayer Team

Playing ssstwitter.com_1695514504320.mp4.
libavformat version 60.3.100 (external)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7ffff79e5240]Protocol name not provided, cannot determine if input is local or a network protocol, buffers and access patterns cannot be configured optimally without knowing the protocol

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff67cb286 in ?? () from /usr/lib64/libavcodec.so.60
(gdb) bt
#0  0x00007ffff67cb286 in ?? () from /usr/lib64/libavcodec.so.60
#1  0x00007ffff67cd09c in ?? () from /usr/lib64/libavcodec.so.60
#2  0x00007ffff67ceddf in ?? () from /usr/lib64/libavcodec.so.60
#3  0x00007ffff68db3c8 in ?? () from /usr/lib64/libavcodec.so.60
#4  0x00007ffff68dc280 in avcodec_send_packet () from /usr/lib64/libavcodec.so.60
#5  0x00007ffff7825b0b in ?? () from /usr/lib64/libavformat.so.60
#6  0x00007ffff782aa23 in avformat_find_stream_info () from /usr/lib64/libavformat.so.60
#7  0x000055555569305e in ?? ()
#8  0x0000555555851280 in ?? ()
#9  0x00007fffffffc0d0 in ?? ()
#10 0x0000000000000000 in ?? ()
(gdb) q
A debugging session is active.

        Inferior 1 [process 19104] will be killed.

Quit anyway? (y or n) y

Что не так с этим libavcodec?

Chord ★★★★
() автор топика
Ответ на: комментарий от Chord

Я бы попробовал для начала удалить ffmpeg целиком из системы чтобы оно почистило все принадлежащие ему файлы. Затем поставил бы снова.

Ну и да, в system news никакой инфы по ffmpeg не было?

PPP328 ★★★★★
()
Ответ на: комментарий от Chord

Ну, в кодеках очень много всякой тяжёлой математики и работы с массивами в памяти, видимо где-то баг. Может опции сборки странные сделал?

#0 0x00007fffa8610286 in ?? () from /usr/lib64/libavcodec.so.60

Адрес один и тот же, это какое-то конкретное место.

Можешь сделать info regs и какое-нить disas 0x00007fffa8610200,0x00007fffa8610300 (только адреса подставить из того что в сегфолте выдалось) чтобы примерно увидеть что там.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Chord

Ну и да, пишут что 6я версия слишком свежая и vlc и иже с ним к ней еще не адаптированы.

Посмотрите вот эти ссылки:

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

пишут что 6я версия слишком свежая и vlc и иже с ним к ней еще не адаптированы.

Я там наверху написал, что пробовал ffmpeg 6.0-r9, 6.0-r10, и старую 4.4.4-r6.

И не только vlc падает, mplayer тоже, и сам ffmpeg крашится.

Chord ★★★★
() автор топика
Ответ на: комментарий от Chord

Какая-то дичь: один и тот же видеофайл скопирован в две разные директории. В одной воспроизводится, в другой крашится. Что за хрень такая? Пути в системе все английские, без пробелов.

И ещё наблюдение: если кликом по файлу в ФМ крашится, то если запустить просто vlc, и затем открыть файл через меню - воспроизводит

Chord ★★★★
() автор топика
Ответ на: комментарий от PPP328

Да, на bugs.gentoo.org есть решение: нужно установить

CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext sse sse2 sse3 sse4_1 sse4_2 ssse3"

Для gcc-12 этого не нужно было, а для gcc-13 нужно прописать в make.conf CPU_FLAGS_X86, которые можно посмотреть командой cpuid2cpuflags

Пересобрал ffmpeg с новыми флагами - вроде все работает.

Посмотрим, как другие пакеты отреагируют при следующем обновлении на эти флаги.

Спасибо всем.

P.S. Хотя я не понял, почему на другом компе всё работает без флагов?

Chord ★★★★
() автор топика
Последнее исправление: Chord (всего исправлений: 1)
Ответ на: комментарий от Chord

Посчитай хеши в обеих. Может память бьёт данные и у одного из файлов кеш побился а дополнительно побитые внутренности ffmpeg усиливают плохие эффекты. Ну а обновление ffmpeg просто совпало.

После подсчёта хешей ещё раз запусти в обеих плеер и сравни.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Chord

это не дичь, это то как работают программы в современных ос; собери ffmpeg с дебагом и давай нормальные человечксие bt из gdb

в /etc/portage/env/debug.conf

CFLAGS="${CFLAGS} -Og -fno-omit-frame-pointer -g -ggdb"
CXXFLAGS="${CXXFLAGS}"
FEATURES="nostrip"

и echo 'media-video/ffmpeg debug.conf' >> /etc/portage/package.env

hizel ★★★★★
()