1. 29 Apr, 2021 2 commits
  2. 28 Apr, 2021 4 commits
  3. 27 Apr, 2021 1 commit
  4. 25 Apr, 2021 1 commit
  5. 21 Apr, 2021 1 commit
  6. 20 Apr, 2021 1 commit
  7. 19 Apr, 2021 1 commit
  8. 15 Apr, 2021 1 commit
  9. 11 Apr, 2021 1 commit
  10. 08 Apr, 2021 2 commits
  11. 07 Apr, 2021 1 commit
  12. 04 Apr, 2021 1 commit
  13. 03 Apr, 2021 1 commit
    • Jakub Adam's avatar
      rtpbuffer: make sure header extension buffer is initialized · 50c32a89
      Jakub Adam authored
      Based upon valgrind finding:
      
      Conditional jump or move depends on uninitialised value(s)
         at 0x4AFF589: read_rtp_header_extensions (gstrtpbasedepayload.c:1197)
         by 0x4AFF9E5: gst_rtp_base_depayload_set_headers
      (gstrtpbasedepayload.c:1298)
         by 0x4AFFEE0: gst_rtp_base_depayload_do_push
      (gstrtpbasedepayload.c:1413)
         by 0x4AFFF53: gst_rtp_base_depayload_push
      (gstrtpbasedepayload.c:1448)
         by 0x4AFDEBA: gst_rtp_base_depayload_handle_buffer
      (gstrtpbasedepayload.c:801)
         by 0x4AFE41E: gst_rtp_base_depayload_chain_list
      (gstrtpbasedepayload.c:899)
         by 0x48F262C: gst_pad_chain_data_unchecked (gstpad.c:4414)
         by 0x48F3333: gst_pad_push_data (gstpad.c:4655)
         by 0x48F3DF8: gst_pad_push_list (gstpad.c:4814)
         by 0x4AFAD87: gst_rtp_base_payload_push_list
      (gstrtpbasepayload.c:1978)
         by 0x72B3154: gst_rtp_vp8_pay_handle_buffer (gstrtpvp8pay.c:672)
         by 0x4AF7031: gst_rtp_base_payload_chain (gstrtpbasepayload.c:868)
       Uninitialised value was created by a heap allocation
         at 0x483C77F: malloc (in
      /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
         by 0x4B8BA78: g_malloc (gmem.c:106)
         by 0x4BA3A9D: g_slice_alloc (gslice.c:1069)
         by 0x488D777: _sysmem_new_block (gstallocator.c:413)
         by 0x488DB28: default_alloc (gstallocator.c:512)
         by 0x488D3E8: gst_allocator_alloc (gstallocator.c:310)
         by 0x4AE97E3: gst_rtp_buffer_set_extension_data (gstrtpbuffer.c:856)
         by 0x4AF9EC6: set_headers (gstrtpbasepayload.c:1757)
         by 0x489FE4D: gst_buffer_list_foreach (gstbufferlist.c:287)
         by 0x4AFA87A: gst_rtp_base_payload_prepare_push
      (gstrtpbasepayload.c:1915)
         by 0x4AFAD06: gst_rtp_base_payload_push_list
      (gstrtpbasepayload.c:1970)
         by 0x72B3154: gst_rtp_vp8_pay_handle_buffer (gstrtpvp8pay.c:672)
      
      Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1075>
      50c32a89
  14. 31 Mar, 2021 1 commit
  15. 22 Mar, 2021 1 commit
  16. 19 Mar, 2021 1 commit
  17. 16 Mar, 2021 3 commits
  18. 15 Mar, 2021 1 commit
  19. 12 Mar, 2021 3 commits
  20. 10 Mar, 2021 2 commits
  21. 02 Mar, 2021 1 commit
  22. 25 Feb, 2021 2 commits
  23. 24 Feb, 2021 1 commit
  24. 23 Feb, 2021 1 commit
  25. 18 Feb, 2021 1 commit
  26. 16 Feb, 2021 1 commit
    • Alicia Boya García's avatar
      videodecoder: Fix racy critical when pool negotiation occurs during flush · 29aeba63
      Alicia Boya García authored
      I found a rather reproducible race in a WebKit LayoutTest when a player
      was intantiated and a VP8/9 video was loaded, then torn down after
      getting the video dimensions from the caps.
      
      The crash occurs during the handling of the first frame by gstvpxdec.
      The following actions happen sequentially leading to a crash.
      
      (MT=Main Thread, ST=Streaming Thread)
      
      MT: Sets pipeline state to NULL, which deactivates vpxdec's srcpad,
          which in turn sets its FLUSHING flag.
      
      ST: gst_vpx_dec_handle_frame() -- which is still running -- calls
          gst_video_decoder_allocate_output_frame(); this in turn calls
          gst_video_decoder_negotiate_unlocked() which fails because the
          srcpad is FLUSHING. As a direct consequence of the negotiation
          failure, a pool is NOT set.
      
          gst_video_decoder_negotiate_unlocked() still assumes there is a
          pool, crashing in a critical in gst_buffer_pool_acquire_buffer()
          a couple statements later.
      
      This patch fixes the bug by returning != GST_FLOW_OK when the
      negotiation fails. If the srcpad is FLUSHING, GST_FLOW_FLUSHING is
      returned, otherwise GST_FLOW_ERROR is used.
      
      Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1031>
      29aeba63
  27. 15 Feb, 2021 1 commit
  28. 13 Feb, 2021 2 commits