pop-os / pop

A project for managing all Pop!_OS sources
https://system76.com/pop
2.36k stars 81 forks source link

gstreamer segfaults on some video files #1473

Open mkorenbl opened 3 years ago

mkorenbl commented 3 years ago

Distribution: NAME="Pop!_OS" VERSION="20.10"

Related Application and/or Package Version: gstreamer-1.18.0

Issue/Bug Description: gstreamer segfaults on some video files

Steps to reproduce (if you know):

Expected behavior: No segfaults on gstreamer

Other Notes: Following was tested:

But:

mkorenbl commented 3 years ago

Ran command for testing:

martien@nbk-martien-linux:/data/fototest/NZ/MOV$ gst-launch-1.0 playbin uri=file:///data/fototest/NZ/MOV/1.mov
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'vaapipostproc0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
Got context from element 'vaapipostproc0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayDRM\)\ vaapidisplaydrm1";
Caught SIGSEGV
Spinning.  Please run 'gdb gst-launch-1.0 8393' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.

Ran gdb next:

martien@nbk-martien-linux:~$ sudo gdb gst-launch-1.0 8393
[sudo] password for martien: 
GNU gdb (Ubuntu 9.2-0ubuntu2) 9.2
Copyright (C) 2020 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-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
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 gst-launch-1.0...
(No debugging symbols found in gst-launch-1.0)
Attaching to program: /usr/bin/gst-launch-1.0, process 8393
[New LWP 8394]
[New LWP 8395]
[New LWP 8396]
[New LWP 8397]
[New LWP 8398]
[New LWP 8400]
[New LWP 8401]
[New LWP 8402]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
--Type <RET> for more, q to quit, c to continue without paging--c
0x00007efecbef266f in __GI___poll (fds=0x5614a407f210, nfds=2, timeout=100) at ../sysdeps/unix/sysv/linux/poll.c:29
29  ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.

Hope this helps

mmstick commented 3 years ago

Since gstreamer is packaged by Ubuntu, you may want to report the bug on Launchpad.

ids1024 commented 3 years ago
Got context from element 'vaapipostproc0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
Got context from element 'vaapipostproc0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayDRM\)\ vaapidisplaydrm1";

The problem is probably related to vaapi decoding. Though it's somewhat strange if it appears to be using vaapi on the Nvidia version of Pop!_OS, since nvidia's proprietary drives doesn't use that API.

mkorenbl commented 3 years ago

Since gstreamer is packaged by Ubuntu, you may want to report the bug on Launchpad.

Ran Ubuntu 20.10 from 'live USB', no issues with gstreamer using the default X-org Nvidia driver (nouveau?). I currently cannot reproduce the issue on an Ubuntu 20.10 live environment.

mkorenbl commented 3 years ago

Since gstreamer is packaged by Ubuntu, you may want to report the bug on Launchpad.

I've tested it on a physical install of Ubuntu 20.10 and tested with:

I cannot reproduce the same error on Ubuntu 20.10.

ids1024 commented 3 years ago

Interesting.

Do you see segfaults consistently with certain video formats, or are there particular videos you have this issue with? I'm not sure how to try reproducing it.

mkorenbl commented 3 years ago

I see them with multiple formats: MK20191114-DSCF0028.MOV: ISO Media, Apple QuickTime movie, Apple QuickTime (.MOV/QT) video-2012-07-20-18-31-00.mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]

Video files are from:

glasserc commented 2 years ago

I don't know if it's related but I am also seeing GStreamer segfaults on some videos and inability to play them entirely. I've been reproducing it using gst-play-1.0 and GIFs from Twitter. For example:

> gst-play-1.0 https://video.twimg.com/tweet_video/FNj3y7jXMAAcl8k.mp4
Press 'k' to see a list of keyboard shortcuts.
Now playing https://video.twimg.com/tweet_video/FNj3y7jXMAAcl8k.mp4
Prerolling...
Redistribute latency...
fish: “gst-play-1.0 https://video.twim…” terminated by signal SIGSEGV (Address boundary error)

Using the linked script also causes segfaults on the given videos:

> python3 tmp/software/gstreamer_basic_test.py FNj3y7jXMAAcl8k.mp4
gstreamer initialized
fish: “python3 tmp/software/gstreamer_…” terminated by signal SIGSEGV (Address boundary error)

I tried to extract the video from https://twitter.com/CurbJumpingNYC/status/1502278203406229504 too.

> gst-play-1.0 'https://video.twimg.com/ext_tw_video/1502277840536055817/pu/pl/dBYyXiSe-qZVfEqm.m3u8?tag=12&container=fmp4'
Press 'k' to see a list of keyboard shortcuts.
Now playing https://video.twimg.com/ext_tw_video/1502277840536055817/pu/pl/dBYyXiSe-qZVfEqm.m3u8?tag=12&container=fmp4
fish: “gst-play-1.0 'https://video.twi…” terminated by signal SIGSEGV (Address boundary error)

I wasn't as clear on how to download the actual data (trying to retrieve this file produces an M3U and the Python script doesn't seem to work on it).

These are the versions of GStreamer packages I have installed:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                   Version         Architecture Description
+++-======================================-===============-============-=========================================================================
ii  gir1.2-gst-plugins-bad-1.0:amd64       1.18.5-1ubuntu1 amd64        GObject introspection data for the GStreamer libraries from the "bad" set
ii  gir1.2-gst-plugins-base-1.0:amd64      1.18.5-1        amd64        GObject introspection data for the GStreamer Plugins Base library
ii  gir1.2-gstreamer-1.0:amd64             1.18.5-1        amd64        GObject introspection data for the GStreamer library
ii  gstreamer1.0-alsa:amd64                1.18.5-1        amd64        GStreamer plugin for ALSA
un  gstreamer1.0-audiosink                 <none>          <none>       (no description available)
un  gstreamer1.0-audiosource               <none>          <none>       (no description available)
ii  gstreamer1.0-clutter-3.0:amd64         3.0.27-2build1  amd64        Clutter PLugin for GStreamer 1.0
un  gstreamer1.0-doc                       <none>          <none>       (no description available)
ii  gstreamer1.0-gl:amd64                  1.18.5-1        amd64        GStreamer plugins for GL
ii  gstreamer1.0-gtk3:amd64                1.18.5-1ubuntu2 amd64        GStreamer plugin for GTK+3
ii  gstreamer1.0-libav:amd64               1.18.5-1        amd64        ffmpeg plugin for GStreamer
ii  gstreamer1.0-pipewire:amd64            0.3.32-1        amd64        GStreamer 1.0 plugin for the PipeWire multimedia server
ii  gstreamer1.0-plugins-bad:amd64         1.18.5-1ubuntu1 amd64        GStreamer plugins from the "bad" set
ii  gstreamer1.0-plugins-bad-apps          1.18.5-1ubuntu1 amd64        GStreamer helper programs from the "bad" set
un  gstreamer1.0-plugins-bad-faad          <none>          <none>       (no description available)
un  gstreamer1.0-plugins-bad-videoparsers  <none>          <none>       (no description available)
ii  gstreamer1.0-plugins-base:amd64        1.18.5-1        amd64        GStreamer plugins from the "base" set
ii  gstreamer1.0-plugins-base-apps         1.18.5-1        amd64        GStreamer helper programs from the "base" set
ii  gstreamer1.0-plugins-good:amd64        1.18.5-1ubuntu2 amd64        GStreamer plugins from the "good" set
ii  gstreamer1.0-plugins-ugly:amd64        1.18.5-1        amd64        GStreamer plugins from the "ugly" set
un  gstreamer1.0-plugins-ugly-amr          <none>          <none>       (no description available)
ii  gstreamer1.0-pulseaudio:amd64          1.18.5-1ubuntu2 amd64        GStreamer plugin for PulseAudio (transitional package)
ii  gstreamer1.0-tools                     1.18.5-1        amd64        Tools for use with GStreamer
ii  gstreamer1.0-vaapi:amd64               1.18.5-1        amd64        VA-API plugins for GStreamer
un  gstreamer1.0-vaapi-doc                 <none>          <none>       (no description available)
un  gstreamer1.0-videosink                 <none>          <none>       (no description available)
un  gstreamer1.0-videosource               <none>          <none>       (no description available)
un  gstreamer1.0-visualization             <none>          <none>       (no description available)
ii  gstreamer1.0-x:amd64                   1.18.5-1        amd64        GStreamer plugins for X11 and Pango
ii  libclutter-gst-3.0-0:amd64             3.0.27-2build1  amd64        Open GL based interactive canvas library GStreamer elements
ii  libgstreamer-gl1.0-0:amd64             1.18.5-1        amd64        GStreamer GL libraries
ii  libgstreamer-opencv1.0-0:amd64         1.18.5-1ubuntu1 amd64        GStreamer OpenCV libraries
ii  libgstreamer-plugins-bad1.0-0:amd64    1.18.5-1ubuntu1 amd64        GStreamer libraries from the "bad" set
ii  libgstreamer-plugins-bad1.0-dev:amd64  1.18.5-1ubuntu1 amd64        GStreamer development files for libraries from the "bad" set
ii  libgstreamer-plugins-base1.0-0:amd64   1.18.5-1        amd64        GStreamer libraries from the "base" set
ii  libgstreamer-plugins-base1.0-dev:amd64 1.18.5-1        amd64        GStreamer development files for libraries from the "base" set
ii  libgstreamer-plugins-good1.0-0:amd64   1.18.5-1ubuntu2 amd64        GStreamer development files for libraries from the "good" set
ii  libgstreamer-plugins-good1.0-dev       1.18.5-1ubuntu2 amd64        GStreamer development files for libraries from the "good" set
ii  libgstreamer1.0-0:amd64                1.18.5-1        amd64        Core GStreamer libraries and elements
ii  libgstreamer1.0-dev:amd64              1.18.5-1        amd64        GStreamer core development files
un  libgtk-4-media-gstreamer               <none>          <none>       (no description available)
un  libreoffice-avmedia-backend-gstreamer  <none>          <none>       (no description available)
un  totem-gstreamer                        <none>          <none>       (no description available)

I hadn't considered flatpaks until reading this issue but this is what I have there too:

Name                Application ID              Version    Branch Installation
Discord             com.discordapp.Discord      0.0.17     stable user
Slack               com.slack.Slack             4.23.0     stable user
Steam               com.valvesoftware.Steam     1.0.0.74   stable user
Freedesktop Platfo… org.freedesktop.Platform    21.08.11   21.08  user
i386                …sktop.Platform.Compat.i386            21.08  user
Mesa                …esktop.Platform.GL.default 21.3.6     21.08  user
default             …ktop.Platform.GL32.default            21.08  user
Intel               …sktop.Platform.VAAPI.Intel            21.08  user
i386                ….Platform.VAAPI.Intel.i386            21.08  user
openh264            …edesktop.Platform.openh264 2.1.0      2.0    user
Freedesktop SDK     org.freedesktop.Sdk         21.08.11   21.08  user
GNOME Application … org.gnome.Platform                     41     user
Rhythmbox           org.gnome.Rhythmbox3        3.4.4      stable user
Pop Gtk theme       org.gtk.Gtk3theme.Pop-dark             3.22   user
Zoom                us.zoom.Zoom                5.9.6.2225 stable user

lsb_release -a shows:

No LSB modules are available.
Distributor ID: Pop
Description:    Pop!_OS 21.10
Release:    21.10
Codename:   impish

This is a System76 Lemur Pro that I had bought a couple years ago and came pre-installed with I think 19.10, but that I had never used until dusting it off last weekend and upgrading it.

mmstick commented 2 years ago

You may want to report the issue to the gstreamer project with the sources and flatpak info. In the meantime, perhaps try out mpv / libmpv instead.

glasserc commented 2 years ago

I have opened https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1083 with most of the same information as above.