Bug 374617 - Segfault while trying to play a Netflix DVD
Summary: Segfault while trying to play a Netflix DVD
Status: RESOLVED INTENTIONAL
Alias: None
Product: dragonplayer
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: Harald Sitter
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2017-01-06 00:31 UTC by Damian Nowak
Modified: 2017-01-08 04:59 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Damian Nowak 2017-01-06 00:31:07 UTC
Application: dragon (16.12.0)

Qt Version: 5.7.1
Frameworks Version: 5.29.0
Operating System: Linux 4.8.13-1-ARCH x86_64
Distribution (Platform): Archlinux Packages

-- Information about the crash:
- What I was doing when the application crashed:

1. Insert a Netflix DVD in the drive
2. KDE offers to open the DVD with Dragon Player.
3. I choose to play the DVD.
4. Segfault.

The crash can be reproduced every time.

-- Backtrace:
Application: Dragon Player (dragon), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fe2da0e9480 (LWP 6487))]

Thread 7 (Thread 0x7fe2b08d5700 (LWP 6504)):
[KCrash Handler]
#6  0x00007fe2d0d2022c in g_slice_alloc () at /usr/lib/libglib-2.0.so.0
#7  0x00007fe2d0d242b3 in g_string_sized_new () at /usr/lib/libglib-2.0.so.0
#8  0x00007fe2d0d24862 in g_string_new () at /usr/lib/libglib-2.0.so.0
#9  0x00007fe2d0d096cd in g_log_writer_format_fields () at /usr/lib/libglib-2.0.so.0
#10 0x00007fe2d0d0a53e in g_log_writer_standard_streams () at /usr/lib/libglib-2.0.so.0
#11 0x00007fe2d0d0a647 in g_log_writer_default () at /usr/lib/libglib-2.0.so.0
#12 0x00007fe2d0d08b8c in g_log_structured_array () at /usr/lib/libglib-2.0.so.0
#13 0x00007fe2d0d09047 in g_log_default_handler () at /usr/lib/libglib-2.0.so.0
#14 0x00007fe2d0d09354 in g_logv () at /usr/lib/libglib-2.0.so.0
#15 0x00007fe2d0d0955f in g_log () at /usr/lib/libglib-2.0.so.0
#16 0x00007fe2be0363bc in gst_registry_feature_filter () at /usr/lib/libgstreamer-1.0.so.0
#17 0x00007fe2ae00d0ac in  () at /usr/lib/gstreamer-1.0/libgstautoconvert.so
#18 0x00007fe2ae00d29e in  () at /usr/lib/gstreamer-1.0/libgstautoconvert.so
#19 0x00007fe2ae00d5af in  () at /usr/lib/gstreamer-1.0/libgstautoconvert.so
#20 0x00007fe2be01dfa8 in gst_pad_query () at /usr/lib/libgstreamer-1.0.so.0
#21 0x00007fe2be01e5a9 in gst_pad_peer_query () at /usr/lib/libgstreamer-1.0.so.0
#22 0x00007fe2be0543a8 in  () at /usr/lib/libgstreamer-1.0.so.0
#23 0x00007fe2be01cb4e in gst_pad_forward () at /usr/lib/libgstreamer-1.0.so.0
#24 0x00007fe2be056ca2 in gst_pad_proxy_query_caps () at /usr/lib/libgstreamer-1.0.so.0
#25 0x00007fe2be01ce80 in gst_pad_query_default () at /usr/lib/libgstreamer-1.0.so.0
#26 0x00007fe2be01dfa8 in gst_pad_query () at /usr/lib/libgstreamer-1.0.so.0
#27 0x00007fe2be01e5a9 in gst_pad_peer_query () at /usr/lib/libgstreamer-1.0.so.0
#28 0x00007fe2be059ae4 in gst_pad_peer_query_caps () at /usr/lib/libgstreamer-1.0.so.0
#29 0x00007fe2ae46918a in  () at /usr/lib/gstreamer-1.0/libgstvideoparsersbad.so
#30 0x00007fe2bcfd8170 in  () at /usr/lib/libgstbase-1.0.so.0
#31 0x00007fe2ae4694b7 in  () at /usr/lib/gstreamer-1.0/libgstvideoparsersbad.so
#32 0x00007fe2bcfd5814 in  () at /usr/lib/libgstbase-1.0.so.0
#33 0x00007fe2be01dfa8 in gst_pad_query () at /usr/lib/libgstreamer-1.0.so.0
#34 0x00007fe2be057424 in gst_pad_query_caps () at /usr/lib/libgstreamer-1.0.so.0
#35 0x00007fe2aeac5ac9 in  () at /usr/lib/gstreamer-1.0/libgstresindvd.so
#36 0x00007fe2aeac5c10 in  () at /usr/lib/gstreamer-1.0/libgstresindvd.so
#37 0x00007fe2c415e1c8 in ffi_call_unix64 () at /usr/lib/libffi.so.6
#38 0x00007fe2c415dc2a in ffi_call () at /usr/lib/libffi.so.6
#39 0x00007fe2bd8a37ae in g_cclosure_marshal_generic () at /usr/lib/libgobject-2.0.so.0
#40 0x00007fe2bd8a2f75 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#41 0x00007fe2bd8b4f82 in  () at /usr/lib/libgobject-2.0.so.0
#42 0x00007fe2bd8bdbcc in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#43 0x00007fe2bd8bdfaf in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#44 0x00007fe2bdffd318 in gst_element_add_pad () at /usr/lib/libgstreamer-1.0.so.0
#45 0x00007fe2aead1f6a in  () at /usr/lib/gstreamer-1.0/libgstresindvd.so
#46 0x00007fe2aead28dc in  () at /usr/lib/gstreamer-1.0/libgstresindvd.so
#47 0x00007fe2be0168f7 in  () at /usr/lib/libgstreamer-1.0.so.0
#48 0x00007fe2be016dbe in  () at /usr/lib/libgstreamer-1.0.so.0
#49 0x00007fe2be020eb9 in gst_pad_push_event () at /usr/lib/libgstreamer-1.0.so.0
#50 0x00007fe2aeace166 in  () at /usr/lib/gstreamer-1.0/libgstresindvd.so
#51 0x00007fe2bcff45ff in  () at /usr/lib/libgstbase-1.0.so.0
#52 0x00007fe2bcff5faf in  () at /usr/lib/libgstbase-1.0.so.0
#53 0x00007fe2be04bb41 in  () at /usr/lib/libgstreamer-1.0.so.0
#54 0x00007fe2d0d2aace in  () at /usr/lib/libglib-2.0.so.0
#55 0x00007fe2d0d2a0d5 in  () at /usr/lib/libglib-2.0.so.0
#56 0x00007fe2d29ed454 in start_thread () at /usr/lib/libpthread.so.0
#57 0x00007fe2d56e47df in clone () at /usr/lib/libc.so.6

Thread 6 (Thread 0x7fe2b3fff700 (LWP 6503)):
#0  0x00007fe2d56b3ffd in nanosleep () at /usr/lib/libc.so.6
#1  0x00007fe2d0d2b7b8 in g_usleep () at /usr/lib/libglib-2.0.so.0
#2  0x00007fe2b26e676a in  () at /usr/lib/gstreamer-1.0/libgstxvimagesink.so
#3  0x00007fe2d0d2a0d5 in  () at /usr/lib/libglib-2.0.so.0
#4  0x00007fe2d29ed454 in start_thread () at /usr/lib/libpthread.so.0
#5  0x00007fe2d56e47df in clone () at /usr/lib/libc.so.6

Thread 5 (Thread 0x7fe2ad5fe700 (LWP 6502)):
#0  0x00007fe2d56db48d in poll () at /usr/lib/libc.so.6
#1  0x00007fe2d3aea121 in  () at /usr/lib/libpulse.so.0
#2  0x00007fe2d3adb8f1 in pa_mainloop_poll () at /usr/lib/libpulse.so.0
#3  0x00007fe2d3adbf8e in pa_mainloop_iterate () at /usr/lib/libpulse.so.0
#4  0x00007fe2d3adc040 in pa_mainloop_run () at /usr/lib/libpulse.so.0
#5  0x00007fe2d3aea069 in  () at /usr/lib/libpulse.so.0
#6  0x00007fe2cf02eed8 in  () at /usr/lib/pulseaudio/libpulsecommon-9.0.so
#7  0x00007fe2d29ed454 in start_thread () at /usr/lib/libpthread.so.0
#8  0x00007fe2d56e47df in clone () at /usr/lib/libc.so.6

Thread 4 (Thread 0x7fe2ae008700 (LWP 6500)):
#0  0x00007fe2d56dff19 in syscall () at /usr/lib/libc.so.6
#1  0x00007fe2d0d47f1f in g_cond_wait () at /usr/lib/libglib-2.0.so.0
#2  0x00007fe2b11241ed in  () at /usr/lib/gstreamer-1.0/libgstcoreelements.so
#3  0x00007fe2be04bb41 in  () at /usr/lib/libgstreamer-1.0.so.0
#4  0x00007fe2d0d2aace in  () at /usr/lib/libglib-2.0.so.0
#5  0x00007fe2d0d2a0d5 in  () at /usr/lib/libglib-2.0.so.0
#6  0x00007fe2d29ed454 in start_thread () at /usr/lib/libpthread.so.0
#7  0x00007fe2d56e47df in clone () at /usr/lib/libc.so.6

Thread 3 (Thread 0x7fe2bf957700 (LWP 6489)):
#0  0x00007fe2d56db48d in poll () at /usr/lib/libc.so.6
#1  0x00007fe2d0d02786 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007fe2d0d0289c in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#3  0x00007fe2d63022db in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#4  0x00007fe2d62abd3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#5  0x00007fe2d60ce063 in QThread::exec() () at /usr/lib/libQt5Core.so.5
#6  0x00007fe2d6713de5 in  () at /usr/lib/libQt5DBus.so.5
#7  0x00007fe2d60d2cf8 in  () at /usr/lib/libQt5Core.so.5
#8  0x00007fe2d29ed454 in start_thread () at /usr/lib/libpthread.so.0
#9  0x00007fe2d56e47df in clone () at /usr/lib/libc.so.6

Thread 2 (Thread 0x7fe2c678d700 (LWP 6488)):
#0  0x00007fe2d56db48d in poll () at /usr/lib/libc.so.6
#1  0x00007fe2d348b8e0 in  () at /usr/lib/libxcb.so.1
#2  0x00007fe2d348d679 in xcb_wait_for_event () at /usr/lib/libxcb.so.1
#3  0x00007fe2c88df789 in  () at /usr/lib/libQt5XcbQpa.so.5
#4  0x00007fe2d60d2cf8 in  () at /usr/lib/libQt5Core.so.5
#5  0x00007fe2d29ed454 in start_thread () at /usr/lib/libpthread.so.0
#6  0x00007fe2d56e47df in clone () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7fe2da0e9480 (LWP 6487)):
#0  0x00007fe2d29f310f in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007fe2d348bb57 in  () at /usr/lib/libxcb.so.1
#2  0x00007fe2d348d39f in  () at /usr/lib/libxcb.so.1
#3  0x00007fe2d348d4b2 in xcb_wait_for_reply () at /usr/lib/libxcb.so.1
#4  0x00007fe2c88de96a in QXcbConnection::sync() () at /usr/lib/libQt5XcbQpa.so.5
#5  0x00007fe2c88fa5f9 in QXcbWindow::show() () at /usr/lib/libQt5XcbQpa.so.5
#6  0x00007fe2d6a87e7b in QWindow::setVisible(bool) () at /usr/lib/libQt5Gui.so.5
#7  0x00007fe2d724e1cc in QWidgetPrivate::show_sys() () at /usr/lib/libQt5Widgets.so.5
#8  0x00007fe2d72565a0 in QWidgetPrivate::show_helper() () at /usr/lib/libQt5Widgets.so.5
#9  0x00007fe2d72593b5 in QWidget::setVisible(bool) () at /usr/lib/libQt5Widgets.so.5
#10 0x00007fe2d723ab95 in QStackedLayout::setCurrentIndex(int) () at /usr/lib/libQt5Widgets.so.5
#11 0x00007fe2d723ada4 in QStackedLayout::setCurrentWidget(QWidget*) () at /usr/lib/libQt5Widgets.so.5
#12 0x00007fe2d73a3211 in QStackedWidget::setCurrentWidget(QWidget*) () at /usr/lib/libQt5Widgets.so.5
#13 0x0000000000431fdc in  ()
#14 0x0000000000442f15 in  ()
#15 0x00007fe2d62d90c9 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5
#16 0x00007fe2d720b992 in QAction::triggered(bool) () at /usr/lib/libQt5Widgets.so.5
#17 0x00007fe2d720e380 in QAction::activate(QAction::ActionEvent) () at /usr/lib/libQt5Widgets.so.5
#18 0x00007fe2d72fbead in  () at /usr/lib/libQt5Widgets.so.5
#19 0x00007fe2d72fc0e4 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/libQt5Widgets.so.5
#20 0x00007fe2d73c837a in QToolButton::mouseReleaseEvent(QMouseEvent*) () at /usr/lib/libQt5Widgets.so.5
#21 0x00007fe2d72599b8 in QWidget::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#22 0x00007fe2d73c8459 in QToolButton::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#23 0x00007fe2d721235c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#24 0x00007fe2d721a98d in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#25 0x00007fe2d62ad8e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#26 0x00007fe2d721903d in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib/libQt5Widgets.so.5
#27 0x00007fe2d72740b6 in  () at /usr/lib/libQt5Widgets.so.5
#28 0x00007fe2d7276ac3 in  () at /usr/lib/libQt5Widgets.so.5
#29 0x00007fe2d721235c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#30 0x00007fe2d7219ad1 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#31 0x00007fe2d62ad8e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#32 0x00007fe2d6a7e663 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/libQt5Gui.so.5
#33 0x00007fe2d6a801e5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib/libQt5Gui.so.5
#34 0x00007fe2d6a5e15b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Gui.so.5
#35 0x00007fe2c8915dc0 in  () at /usr/lib/libQt5XcbQpa.so.5
#36 0x00007fe2d0d02587 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#37 0x00007fe2d0d027f0 in  () at /usr/lib/libglib-2.0.so.0
#38 0x00007fe2d0d0289c in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#39 0x00007fe2d63022bf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#40 0x00007fe2d62abd3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#41 0x00007fe2d62b423c in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#42 0x0000000000419ee4 in  ()
#43 0x00007fe2d561c291 in __libc_start_main () at /usr/lib/libc.so.6
#44 0x000000000041a0ba in _start ()

Reported using DrKonqi
Comment 1 Anthony Fieroni 2017-01-07 07:10:12 UTC
Try with gstreamer
gst-play-1.0 /dev/sr0 or gst-play-1.0 /dev/cdrom
Is he played well?
Comment 2 Damian Nowak 2017-01-07 19:37:33 UTC
Hey Anthony, thanks for your timely reply and suggestion!

I wasn't able to play the DVD in any player. I started looking around and found out about "DVD regions". I'm from Europe but live in the U.S. - once I changed the region and I was immediately able to play the movie in VLC player. Dragon Player no longer segfaults but still doesn't play the video (but GStreamer doesn't play the movie, but it's beyond the scope of this ticket/KDE team).

Therefore, we have one confirmed bug here: if the region of DVD device doesn't match the region of DVD disk, Dragon Player segfaults.

===

Just a FYI. Not seeking help with this.

Gstreamer doesn't play the DVD:

---
nowaker@nwkr-laptop ~ % gst-play-1.0 /dev/sr0
Press 'k' to see a list of keyboard shortcuts.
Now playing /dev/sr0
ERROR Error parsing H.264 stream for file:///dev/sr0
ERROR debug information: gsth264parse.c(1179): gst_h264_parse_handle_frame (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstH264Parse:h264parse0:
No H.264 NAL unit found
Reached end of play list.
---

VLC works fine:

---
nowaker@nwkr-laptop ~ % vlc /dev/sr0
VLC media player 2.2.4 Weatherwax (revision 2.2.3-37-g888b7e89)
[0000000000d49148] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
libdvdnav: Using dvdnav version 5.0.3
libdvdnav: DVD Title: (...)
(...)
---
Comment 3 Anthony Fieroni 2017-01-07 21:08:53 UTC
Phonon is just a warpper around gstreamer library, dragon is a graphical representation of Phonon, so you have 2 choices:
1. sudo pacman -S gstreamer-vaapi libva x264 x265
2. sudo pacman -S phonon-qt5-vlc (vlc backend for phonon, systemsettings -> multimedia -> audio/video)

In 2 cases it's better to provide vainfo result because of missing h264 decoder.
sudo pacman -S vainfo
Comment 4 Damian Nowak 2017-01-07 21:45:07 UTC
Thanks Anthony. Using VLC as a backend works fine.

Gstreamer doesn't seem to work although everything seems to be in place for it. Same error message as previously, No H.264 NAL unit found.

nowaker@nwkr-laptop ~ % pacman -Q | grep -P 'vaapi|libva|x26'
gstreamer-vaapi 1.10.2-1
libva 1.7.3-1
libva-intel-driver 1.7.3-1
libx264 2:148.20160920-1
x264 2:148.20160920-1
x265 2.2-1

Here's vainfo:

nowaker@nwkr-laptop ~ % vainfo
libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Sandybridge Mobile - 1.7.3
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc

===

For future readers of this thread: vainfo is part of libva.

% pacman -Qo vainfo
/usr/bin/vainfo is owned by libva 1.7.3-1
Comment 5 Anthony Fieroni 2017-01-08 04:59:53 UTC
I made bugreport down to gstreamer https://bugzilla.gnome.org/show_bug.cgi?id=776998