After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 792536 - Immediate SegFault of gst-validate with a certain given (ok, broken) pipeline
Immediate SegFault of gst-validate with a certain given (ok, broken) pipeline
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-devtools
1.12.x
Other Linux
: Normal normal
: 1.15.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2018-01-15 16:12 UTC by Marie Maurer
Modified: 2018-04-27 15:35 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Marie Maurer 2018-01-15 16:12:05 UTC
Example with qtdemux:
(I know splitmuxsrc already contains the demuxer...)

# gst-validate-1.0 --set-scenario only-header-file splitmuxsrc location=big_buck_bunny_1080p_h264.mov ! qtdemux ! fakesink

=========================================
Running scenario only-header-file on pipeline pipeline0 =========================================
Starting pipeline
Pipeline started
Executing  stop:
Segmentation fault

# cat only-header-file
description, duration=65.0, min-media-duration=65.0

Example with qtmux:
(I know splitmuxsrc already contains the demuxer...)

# gst-launch-1.0 --version
Invalid byte sequence in conversion input Invalid byte sequence in conversion input
gst-launch-1.0 version 1.12.4
GStreamer 1.12.4
Unknown package origin
# uname -a
Linux buildroot 4.15.0-rc6-20180102-1 #2 SMP PREEMPT Wed Jan 10 18:50:37 CET 2018 armv7l GNU/Linux # gst-validate-1.0 --set-scenario only-header-file splitmuxsrc location=big_buck _bunny_1080p_h264.mov ! qtmux ! fakesink

# gdb --args gst-validate-1.0 --set-scenario only-header-file splitmuxsrc locati on=big_buck_bunny_1080p_h264.mov ! qtdemux ! fakesink GNU gdb (GDB) 8.0.1 Copyright (C) 2017 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 "arm-buildroot-linux-gnueabihf".
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-validate-1.0...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/gst-validate-1.0 --set-scenario only-header-file splitmuxsrc location=big_buck_bunny_1080p_h264.mov \! qtdemux \! fakesink [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/libthread_db.so.1".
[New Thread 0x75e4f420 (LWP 764)]

=========================================
Running scenario only-header-file on pipeline pipeline0 =========================================
Starting pipeline
[New Thread 0x754ff420 (LWP 765)]
[New Thread 0x74aff420 (LWP 766)]
[New Thread 0x74153420 (LWP 767)]
[New Thread 0x737ff420 (LWP 768)]
Pipeline started
Executing  stop:

Thread 6 "splitmuxsrc0:vi" received signal SIGSEGV, Segmentation fault.

Thread 1937765408 (LWP 768)

  • #0 ??
    from /usr/lib/libgstvalidate-1.0.so.0
  • #0 _check_pad_query_failures
    at gst-validate-pipeline-monitor.c line 151
  • #1 _gather_pad_negotiation_details
    at gst-validate-pipeline-monitor.c line 203
  • #2 _generate_not_negotiated_error_report
    at gst-validate-pipeline-monitor.c line 431
  • #3 _bus_handler
    at gst-validate-pipeline-monitor.c line 473
  • #4 ffi_call_unix64
    from /home/xxx/Work/gstreamer/install-1.12.1/lib64/libffi.so.6
  • #5 ffi_call
    from /home/xxx/Work/gstreamer/install-1.12.1/lib64/libffi.so.6
  • #6 g_cclosure_marshal_generic
    at gclosure.c line 1490
  • #7 g_closure_invoke
    at gclosure.c line 804
  • #8 signal_emit_unlocked_R
    at gsignal.c line 3635
  • #9 g_signal_emit_valist
    at gsignal.c line 3391
  • #10 g_signal_emit
    at gsignal.c line 3447
  • #11 gst_bus_sync_signal_handler
    at gstbus.c line 1249
  • #12 gst_bus_post
    at gstbus.c line 342
  • #13 gst_element_post_message_default
    at gstelement.c line 1783
  • #14 gst_bin_post_message
    at gstbin.c line 2789
  • #15 gst_element_post_message
    at gstelement.c line 1826
  • #16 gst_bin_handle_message_func
    at gstbin.c line 4040
  • #17 gst_pipeline_handle_message
    at gstpipeline.c line 600
  • #18 bin_bus_handler
    at gstbin.c line 3260
  • #19 gst_bus_post
    at gstbus.c line 336
  • #20 gst_element_post_message_default
    at gstelement.c line 1783
  • #21 gst_bin_post_message
    at gstbin.c line 2789
  • #22 gst_element_post_message
    at gstelement.c line 1826
  • #23 gst_element_message_full_with_details
    at gstelement.c line 1962
  • #24 gst_splitmux_pad_loop
    at gstsplitmuxsrc.c line 556
  • #25 gst_task_func
    at gsttask.c line 335
  • #26 g_thread_pool_thread_proxy
    at gthreadpool.c line 307
  • #27 g_thread_proxy
    at gthread.c line 784
  • #28 start_thread
    from /lib64/libpthread.so.0
  • #29 clone
    from /lib64/libc.so.6

Comment 1 Marie Maurer 2018-01-15 16:19:39 UTC
Format of my text got lost. Reformat entry somehow?
Comment 2 Tim-Philipp Müller 2018-01-15 17:08:49 UTC
Could you check what's happening in gdb?

Is the monitor variable NULL? or monitor->last_query_res ?
Comment 3 Marie Maurer 2018-01-16 10:22:20 UTC
(gdb) p monitor
$1 = (GstValidatePadMonitor *) 0x0
Comment 4 Nicolas Dufresne (ndufresne) 2018-04-26 21:18:46 UTC
Can you share the scenario file in order to let someone reproduce ?
Comment 5 Marie Maurer 2018-04-27 14:38:14 UTC
Hi Nicolas,
I think everything is in my first entry. What is missing?
Scenario is "only-header-file", which content I have display via "cat".
Best regards,
Marie
Comment 6 Thibault Saunier 2018-04-27 15:05:33 UTC
(In reply to Martin Maurer from comment #5)
> Hi Nicolas,
> I think everything is in my first entry. What is missing?
> Scenario is "only-header-file", which content I have display via "cat".
> Best regards,
> Marie

Yeah, I am able to reproduce, I am gonna fix it.
Comment 7 Thibault Saunier 2018-04-27 15:34:46 UTC
commit ba3b27fa8356f84148c6f2b8274baf9604e8f9f8 (HEAD -> master)
Author: Thibault Saunier <tsaunier@igalia.com>
Date:   Fri Apr 27 17:32:38 2018 +0200

    validate: pipeline: Handle the case where a pad has no monitor

    We do not monitor ghost pads, only real pads, so this is a totally
    legitimate case.

    https://bugzilla.gnome.org/show_bug.cgi?id=792536