1. 22 Jul, 2019 1 commit
    • Alicia Boya García's avatar
      downloadbuffer: Check for flush after seek · b50abd9f
      Alicia Boya García authored
      In gst_download_buffer_wait_for_data(), when a seek is made with
      perform_seek_to_offset() the `qlock` is released temporarily. Therefore,
      the flushing condition can be set during this period and should be
      This was not being checked before, causing occasional deadlocks when
      GST_DOWNLOAD_BUFFER_WAIT_ADD_CHECK() assumes that the caller has already
      checked that we're not flushing before, since this is done when
      acquiring the lock; so if we release it temporarily somewhere, we need
      to check for flush again.
      Without that check, the function would keep waiting for the condition
      variable to be notified before checking for flushing condition again,
      and that may very well never happen. This was reproduced when during pad
      deactivation when running WebKit in gdb.
  2. 20 Jul, 2019 1 commit
    • Nicolas Dufresne's avatar
      identity: Non-live upstream have no max latency · 86b9f787
      Nicolas Dufresne authored
      sync=TRUE implementation changes the latency query of a non-live
      upstream into live, though it wrongly set the upstream max latency to 0.
      As non-live sources won't loose data if we wait longer, this should have
      been reported as have no max latency limite (-1).
  3. 19 Jul, 2019 2 commits
  4. 15 Jul, 2019 2 commits
    • Sebastian Dröge's avatar
    • Sebastian Dröge's avatar
      info: Deprecate gst_debug_category_free() · 04a73341
      Sebastian Dröge authored
      And change it to do nothing at all.
      As debug categories don't use reference counting and they can be
      retrieved from anywhere at any time by name, it is fundamentally unsafe
      to free them at any point in time except for right before the end of the
      No code apart from a unit test seems to be currently using the function,
      so deprecate it and also change it to do nothing at all.
  5. 11 Jul, 2019 1 commit
  6. 09 Jul, 2019 1 commit
    • Sebastian Dröge's avatar
      aggregator: Make parsing of explicit sink pad names more robust · 09909d37
      Sebastian Dröge authored
      When passing "sink_%d" twice to aggregator before it would create two
      pads called "sink_0", because it failed to parse "%d" as integer and
      used 0 instead then.
      Instead validate that parsing was actually successful and also don't
      even try to parse if the requested pad name contains a '%'.
  7. 08 Jul, 2019 2 commits
  8. 07 Jul, 2019 1 commit
  9. 02 Jul, 2019 10 commits
    • Thibault Saunier's avatar
      multiqueue: Fix possible NULL pointer dereferencing · 7a2d32ab
      Thibault Saunier authored
      In the hotdoc inspector for example, pads are instantiated with
      g_object_new, other code paths to get/set properties already make
      that check.
      And update doc cache
    • Nirbheek Chauhan's avatar
      gstinfo: Fix typo in debug log message · e5a3f12f
      Nirbheek Chauhan authored
    • Tim-Philipp Müller's avatar
      leakstracer: Improve notes in the the get-live-objects API docs · b5dc8598
      Tim-Philipp Müller authored
      It may not be obvious to the user how this action signal is meant to
      be called, so document it.
    • Nirbheek Chauhan's avatar
    • Nirbheek Chauhan's avatar
      leakstracer: Add API for tracking and checkpointing objects · 6ccf59ec
      Nirbheek Chauhan authored
      This feature was previously available only through the SIGUSR2 signal,
      which meant it wasn't available on platforms that don't have UNIX
      signals, such as Windows and with applications that already use
      SIGUSR1 for something else.
      Now we have action-signals for doing the same. These action signals
      can also be used for fetching the checkpoint information
      programmatically instead of printing to the debug log.
    • Nirbheek Chauhan's avatar
      tests: Add test for new live-objects leaktracer API · 5524137d
      Nirbheek Chauhan authored
      Needs a valgrind suppression for:
      ==11119== Warning: invalid file descriptor -1 in syscall close()
      ==11119== Warning: invalid file descriptor -1 in syscall close()
      ==11119== Syscall param write(buf) points to uninitialised byte(s)
      ==11119==    at 0x4C4AFAD: syscall (in /usr/lib64/libc-2.29.so)
      ==11119==    by 0x4E70DF9: write_validate (Ginit.c:112)
      ==11119==    by 0x4E70DF9: UnknownInlinedFun (Ginit.c:148)
      ==11119==    by 0x4E70DF9: mincore_validate (Ginit.c:131)
      ==11119==    by 0x4E70CC3: UnknownInlinedFun (Ginit.c:208)
      ==11119==    by 0x4E70CC3: access_mem (Ginit.c:242)
      ==11119==    by 0x4E75536: UnknownInlinedFun (libunwind_i.h:168)
      ==11119==    by 0x4E75536: apply_reg_state (Gparser.c:863)
      ==11119==    by 0x4E75A71: _ULx86_64_dwarf_step (Gparser.c:952)
      ==11119==    by 0x4E71BD3: _ULx86_64_step (Gstep.c:71)
      ==11119==    by 0x48BAF47: generate_unwind_trace (gstinfo.c:2726)
      ==11119==    by 0x48BC92E: gst_debug_get_stack_trace (gstinfo.c:2908)
      ==11119==    by 0x49B2BB2: handle_object_created.part.0 (gstleaks.c:384)
      ==11119==    by 0x488134E: gst_object_constructed (gstobject.c:141)
      ==11119==    by 0x49EC61B: g_object_new_internal (gobject.c:1845)
      ==11119==    by 0x49EE347: g_object_new_valist (gobject.c:2128)
      ==11119==    by 0x49EE69C: g_object_new (gobject.c:1648)
      ==11119==    by 0x48CA59D: gst_pad_new_from_template (gstpad.c:867)
      ==11119==    by 0x68C209E: gst_base_src_init (gstbasesrc.c:454)
      ==11119==    by 0x4A0A0C3: g_type_create_instance (gtype.c:1858)
      ==11119==    by 0x49EC42C: g_object_new_internal (gobject.c:1805)
      ==11119==    by 0x49EDB14: g_object_new_with_properties (gobject.c:1973)
      ==11119==    by 0x49EE6C0: g_object_new (gobject.c:1645)
      ==11119==    by 0x48AF91A: gst_element_factory_create (gstelementfactory.c:372)
      ==11119==  Address 0x1ffeffe000 is on thread 1's stack
      ==11119==  in frame #6, created by generate_unwind_trace (gstinfo.c:2695)
      Fixed in libunwind commit:
      Needs a separate suppression for Debian because the callstack is
      different there.
    • Nirbheek Chauhan's avatar
      leakstracer: Add API for logging leaks in the debug log · 6e3565ca
      Nirbheek Chauhan authored
      This is the equivalent of sending SIGUSR1 to the application, and is
      useful on platforms where UNIX signals are not available, such as
    • Nirbheek Chauhan's avatar
      leakstracer: Add API for fetching leaked objects · 44198ec4
      Nirbheek Chauhan authored
      This allows programs to inspect the leaked objects directly, log them,
      and so on. Unlike the existing mechanism to use SIGUSR1, this also
      works on platforms that do not support UNIX signals, such as Windows
      and with applications that already use SIGUSR1 for something else.
    • Nirbheek Chauhan's avatar
      gsttracer: Add new API to fetch the list of active tracers · 1685f38b
      Nirbheek Chauhan authored
      This will be useful in the next commit where we add action-signals on
      the leaks tracer to get information about leaks and to manipulate
      checkpoints as a replacement for the SIGUSR1 and SIGUSR2 signals for
      doing the same.
    • Nirbheek Chauhan's avatar
      tracers: Allow setting a name for all tracer objects · 5cdf1b7d
      Nirbheek Chauhan authored
      This will be useful in combination with the next commit when we add
      API to get a list of active tracers so that consumers of the API can
      easily distinguish tracer objects.
  10. 01 Jul, 2019 10 commits
  11. 28 Jun, 2019 3 commits
  12. 27 Jun, 2019 1 commit
    • Nicolas Dufresne's avatar
      testclock: Allow calling crank with a past entry · 91543bd7
      Nicolas Dufresne authored
      At the moment, we can only use crank if the pending entry is in the
      future. This patch leaves the clock time to the same point if the
      pending entry was in the past. This still execute a single entry. This
      will be needed for the jitterbuffer, since as soon as we stop waking up
      the jitterbuffer when the timer is reschedule later, we may endup with
      such case in the unit tests.
      Related to #608
  13. 25 Jun, 2019 1 commit
    • Thibault Saunier's avatar
      multiqueue: Stop using the gst_pad_element_private API · 6a20fcc9
      Thibault Saunier authored
      There was a race where we could still get the pad event function
      called when its private member were already unset, leading to
      a segfault in the event handler:
      0  gst_multi_queue_src_event (pad=<optimized out>, parent=<optimized out>, event=0x7f3ff0007600) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2534
      2534          ret = gst_pad_push_event (sq->sinkpad, event);
      [Current thread is 1 (Thread 0x7f406c0258c0 (LWP 21925))]
      (gdb) bt
      0  0x00007f4062ec1399 in gst_multi_queue_src_event (pad=<optimized out>, parent=<optimized out>, event=0x7f3ff0007600 [GstEvent]) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2534
      1  0x00007f406b40f46d in gst_validate_pad_monitor_src_event_check (handler=0x7f4062ec1360 <gst_multi_queue_src_event>, event=0x7f3ff0007600 [GstEvent], parent=0x7f3fcc01f090 [GstMultiQueue|multiqueue167], pad_monitor=0x7f3fe809e7c0 [GstValidatePadMonitor|validatepadmonitor2213]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2101
      2  0x00007f406b40f46d in gst_validate_pad_monitor_src_event_func (pad=<optimized out>, parent=0x7f3fcc01f090 [GstMultiQueue|multiqueue167], event=0x7f3ff0007600 [GstEvent]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2374
      3  0x00007f406b904387 in gst_pad_send_event_unchecked (pad=pad@entry=0x7f3fdc027650 [GstPad|src_0], event=event@entry=0x7f3ff0007600 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5772
      4  0x00007f406b90481b in gst_pad_push_event_unchecked (pad=pad@entry=0x7f4058182fc0 [GstPad|sink], event=event@entry=0x7f3ff0007600 [GstEvent], type=type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5417
      5  0x00007f406b90f016 in gst_pad_push_event (pad=0x7f4058182fc0 [GstPad|sink], event=event@entry=0x7f3ff0007600 [GstEvent]) at ../subprojects/gstreamer/gst/gstpad.c:5554
      6  0x00007f406a1c99ba in gst_video_decoder_src_event_default (decoder=0x7f3fe81c6060 [GstTheoraDec|theoradec46], event=<optimized out>) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:1532
      7  0x00007f406b40f46d in gst_validate_pad_monitor_src_event_check (handler=0x7f406a1ca270 <gst_video_decoder_src_event>, event=0x7f3ff0007600 [GstEvent], parent=0x7f3fe81c6060 [GstTheoraDec|theoradec46], pad_monitor=0x7f4028163aa0 [GstValidatePadMonitor|validatepadmonitor2216]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2101
      8  0x00007f406b40f46d in gst_validate_pad_monitor_src_event_func (pad=<optimized out>, parent=0x7f3fe81c6060 [GstTheoraDec|theoradec46], event=0x7f3ff0007600 [GstEvent]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2374
      This make the GstSingleQueue a MiniObject, mainly so it is properly
      This also make use of the GstMultiQueuePad class for srcpads which
      is totally valid as srcpads and sinkpads share the same SingleQueue
  14. 21 Jun, 2019 1 commit
  15. 20 Jun, 2019 3 commits