Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer-devtools for 
openSUSE:Factory checked in at 2025-07-03 12:10:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-devtools (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-devtools.new.1903 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-devtools"

Thu Jul  3 12:10:26 2025 rev:36 rq:1289976 version:1.26.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer-devtools/gstreamer-devtools.changes    
2025-06-06 22:41:22.528623086 +0200
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-devtools.new.1903/gstreamer-devtools.changes
  2025-07-03 12:12:37.451092369 +0200
@@ -1,0 +2,7 @@
+Tue Jul  1 20:18:53 UTC 2025 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 1.26.3:
+  + validate: More memory leaks
+  + validate: Valgrind fixes
+
+-------------------------------------------------------------------

Old:
----
  gst-devtools-1.26.2.obscpio

New:
----
  gst-devtools-1.26.3.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gstreamer-devtools.spec ++++++
--- /var/tmp/diff_new_pack.DrpdtQ/_old  2025-07-03 12:12:39.227166754 +0200
+++ /var/tmp/diff_new_pack.DrpdtQ/_new  2025-07-03 12:12:39.227166754 +0200
@@ -20,7 +20,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           gstreamer-devtools
-Version:        1.26.2
+Version:        1.26.3
 Release:        0
 Summary:        Development and debugging tools for GStreamer
 License:        LGPL-2.1-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.DrpdtQ/_old  2025-07-03 12:12:39.263168262 +0200
+++ /var/tmp/diff_new_pack.DrpdtQ/_new  2025-07-03 12:12:39.263168262 +0200
@@ -5,7 +5,7 @@
     <param 
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
     <param name="subdir">subprojects/gst-devtools</param>
     <param name="filename">gst-devtools</param>
-    <param name="revision">1.26.2</param>
+    <param name="revision">1.26.3</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param name="versionrewrite-pattern">v?(.*)\+0</param>
     <param name="versionrewrite-replacement">\1</param>

++++++ gst-devtools-1.26.2.obscpio -> gst-devtools-1.26.3.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-devtools-1.26.2/NEWS new/gst-devtools-1.26.3/NEWS
--- old/gst-devtools-1.26.2/NEWS        2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/NEWS        2025-06-26 22:25:24.000000000 +0200
@@ -1809,6 +1809,213 @@
 -   List of Merge Requests applied in 1.26.2
 -   List of Issues fixed in 1.26.2
 
+1.26.3
+
+The third 1.26 bug-fix release (1.26.3) was released on 26 June 2025.
+
+This release only contains bugfixes including some important playback fixes, 
and it should be safe to update from 1.26.x.
+
+Highlighted bugfixes in 1.26.3
+
+-   Security fix for the H.266 video parser
+-   Fix regression for WAV files with acid chunks
+-   Fix high memory consumption caused by a text handling regression in 
uridecodebin3 and playbin3
+-   Fix panic on late GOP in fragmented MP4 muxer
+-   Closed caption conversion, rendering and muxing improvements
+-   Decklink video sink preroll frame rendering and clock drift handling fixes
+-   MPEG-TS demuxing and muxing fixes
+-   MP4 muxer fixes for creating very large files with faststart support
+-   New thread-sharing 1:N inter source and sink elements, and a ts-rtpdtmfsrc
+-   New speech synthesis element around ElevenLabs API
+-   RTP H.265 depayloader fixes and improvements, as well as TWCC and GCC 
congestion control fixes
+-   Seeking improvements in DASH client for streams with gaps
+-   WebRTC sink and source fixes and enhancements, including to LiveKit and 
WHIP signallers
+-   The macOS osxvideosink now posts navigation messages
+-   QtQML6GL video sink input event handling improvements
+-   Overhaul detection of hardware-accelerated video codecs on Android
+-   Video4Linux capture source fixes and support for BT.2100 PQ and 1:4:5:3 
colorimetry
+-   Vulkan buffer upload and memory handling regression fixes
+-   gst-python: fix various regressions introduced in 1.26.2
+-   cerbero: fix text relocation issues on 32-bit Android and fix broken 
VisualStudio VC templates
+-   packages: ship pbtypes plugin and update openssl to 3.5.0 LTS
+-   Various bug fixes, build fixes, memory leak fixes, and other stability and 
reliability improvements
+
+gstreamer
+
+-   aggregator: Do not set event seqnum to INVALID
+-   baseparse: test: Fix race on test start
+-   pad: Only remove TAG events on STREAM_START if the stream-id actually 
changes
+-   utils: Mark times array as static to avoid symbol conflict with the POSIX 
function
+-   vecdeque: Use correct index type gst_vec_deque_drop_struct()
+
+gst-plugins-base
+
+-   GstAudioAggregator: fix structure unref in peek_next_sample()
+-   audioconvert: Fix setting mix-matrix when input caps changes
+-   encodebasebin: Duplicate encoding profile in property setter
+-   gl: simplify private gst_gl_gst_meta_api_type_tags_contain_only()
+-   osxvideosink: Use gst_pad_push_event() and post navigation messages
+-   playsink: Fix race condition in stream synchronizer pad cleanup during 
state changes
+-   python: Fix pulling events from appsink
+-   streamsynchronizer: Consider streams having received stream-start as 
waiting
+-   urisourcebin: Text tracks are no longer set as sparse stream in 
urisourcebin’s multiqueue
+
+gst-plugins-good
+
+-   aacparse: Fix counting audio channels in program_config_element
+-   adaptivedemux2: free cancellable when freeing transfer task
+-   dashdemux2: Fix seeking in a stream with gaps
+-   decodebin wavparse cannot pull header
+-   imagefreeze: fix not negotiate log when stop
+-   osxvideosink: Use gst_pad_push_event() and post navigation messages
+-   qml6glsink: Allow configuring if the item will consume input events
+-   qtmux: Update chunk offsets when converting stco to co64 with faststart
+-   splitmuxsink: Only send closed message once per open fragment
+-   rtph265depay: CRA_NUT can also start an (open) GOP
+-   rtph265depay: fix codec_data generation
+-   rtspsrc: Don’t emit error during close if server is EOF
+-   twcc: Fix reference timestamp wrapping (again)
+-   v4l2: Fix possible internal pool leak
+-   v4l2object: Add support for colorimetry bt2100-pq and 1:4:5:3
+-   wavparse: Don’t error out always when parsing acid chunks
+
+gst-plugins-bad
+
+-   amc: Overhaul hw-accelerated video codecs detection
+-   bayer2rgb: Fix RGB stride calculation
+-   d3d12compositor: Fix critical warnings
+-   dashsink: Fix failing test
+-   decklink: calculate internal using values closer to the current clock times
+-   decklinkvideosink: show preroll frame correctly
+-   decklink: clock synchronization after pause
+-   h266parser: Fix overflow when parsing subpic_level_info
+-   lcevcdec: Check for errors after receiving all enhanced and base pictures
+-   meson: fix building -bad tests with disabled soundtouch
+-   mpegts: handle MPEG2-TS with KLV metadata safely by preventing out of 
bounds
+-   mpegtsmux: Corrections around Teletext handling
+-   srtsink: Fix header buffer filtering
+-   transcoder: Fix uritranscodebin reference handling
+-   tsdemux: Allow access unit parsing failures
+-   tsdemux: Send new-segment before GAP
+-   vulkanupload: fix regression for uploading VulkanBuffer
+-   vulkanupload: fix regression when uploading to single memory multiplaned 
memory images.
+-   webrtcbin: disconnect signal ICE handlers on dispose
+-   {d3d12,d3d11}compositor: Fix negative position handling
+-   {nv,d3d12,d3d11}decoder: Use interlace info in input caps
+
+gst-plugins-ugly
+
+-   No changes
+
+GStreamer Rust plugins
+
+-   Add new speech synthesis element around ElevenLabs API
+-   cea708mux: fix another WouldOverflow case
+-   cea708mux: support configuring a limit to how much data will be pending
+-   cea708overlay: also reset the output size on flush stop
+-   gcc: handle out of order packets
+-   fmp4mux: Fix panic on late GOP
+-   livekit: expose a connection state property
+-   mp4mux: add taic box
+-   mp4mux: test the trak structure
+-   pcap_writer: Make target-property and pad-path properties writable again
+-   skia: Don’t build skia plugin by default for now
+-   threadshare: cleanups & usability improvements
+-   threadshare: sync runtime with latest async-io
+-   threadshare: fix kqueue reactor
+-   threadshare: Update to getifaddrs 0.2
+-   threadshare: add new thread-sharing inter elements
+-   threadshare: add a ts-rtpdtmfsrc element
+-   transcriberbin: fix naming of subtitle pads
+-   tttocea708: don’t panic if a new service would overflow
+-   webrtc: android: Update Gradle and migrate to FindGStreamerMobile
+-   webrtc: add new examples for stream selection over data channel
+-   webrtcsrc: the webrtcbin get-transceiver index is not mlineindex
+-   webrtcsrc: send CustomUpstream events over control channel ..
+-   webrtcsink: Don’t require encoder element for pre-encoded streams
+-   webrtcsink: Don’t reject caps events if the codec_data changes
+-   whip: server: pick session-id from the endpoint if specified
+-   cargo: add config file to force CARGO_NET_GIT_FETCH_WITH_CLI=true
+-   Cargo.lock, deny: Update dependencies and log duplicated targo-lexicon
+-   Update windows-sys dependency from “>=0.52, <=0.59” to “>=0.52, <=0.60”
+-   deny: Add override for windows-sys 0.59
+-   deny: Update lints
+-   cargo_wrapper: Fix backslashes being parsed as escape codes on Windows
+-   Fixes for Clock: non-optional return types
+-   Rename relationmeta plugin to analytics
+
+gst-libav
+
+-   No changes
+
+gst-rtsp-server
+
+-   rtsp-server: tests: Fix a few memory leaks
+
+gstreamer-vaapi
+
+-   No changes
+
+gstreamer-sharp
+
+-   No changes
+
+gst-python
+
+This release includes some important regression fixes for the GStreamer Python 
bindings for regressions introduced in 1.26.2.
+
+-   gst-python/tests: don’t depend on webrtc and rtsp-server
+-   python: Fix pulling events from appsink and other fixes
+
+gst-editing-services
+
+-   No changes
+
+gst-devtools, gst-validate + gst-integration-testsuites
+
+-   validate: More memory leaks
+-   validate: Valgrind fixes
+
+gst-examples
+
+-   No changes
+
+gstreamer-docs
+
+-   No changes
+
+Development build environment
+
+-   gst-env: Emit a warning about DYLD_LIBRARY_PATH on macOS
+
+Cerbero build tool and packaging changes in 1.26.3
+
+-   WiX: fix broken VC templates
+-   android: Don’t ignore text relocation errors on 32-bit, and error out if 
any are found
+-   build: source: handle existing .cargo/config.toml as in plugins-rs
+-   ci: Detect text relocations when building android examples
+-   gst-plugins-base: Ship pbtypes
+-   gst-plugins-base: Fix category of pbtypes
+-   gst-plugins-rs: Update for relationmeta -> analytics plugin rename
+-   libsoup.recipe: XML-RPC support was removed before the 3.0 release
+-   openssl: Update to 3.5.0 LTS
+
+Contributors to 1.26.3
+
+Albert Sjolund, Aleix Pol, Ben Butterworth, Brad Hards, César Alejandro 
Torrealba Vázquez, Changyong Ahn, Doug Nazar, Edward
+Hervey, Elliot Chen, Enrique Ocaña González, François Laignel, Glyn Davies, He 
Junyan, Jakub Adam, James Cowgill, Jan Alexander
+Steffens (heftig), Jan Schmidt, Jochen Henneberg, Johan Sternerup, Julian 
Bouzas, L. E. Segovia, Loïc Le Page, Mathieu
+Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe 
Normand, Pratik Pachange, Qian Hu (胡骞), Sebastian
+Dröge, Seungha Yang, Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, 
Tim-Philipp Müller, Víctor Manuel Jáquez Leal,
+Xavier Claessens,
+
+… and many others who have contributed bug reports, translations, sent 
suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.26.3
+
+-   List of Merge Requests applied in 1.26.3
+-   List of Issues fixed in 1.26.3
+
 Schedule for 1.28
 
 Our next major feature release will be 1.28, and 1.27 will be the unstable 
development version leading up to the stable 1.28
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-devtools-1.26.2/RELEASE 
new/gst-devtools-1.26.3/RELEASE
--- old/gst-devtools-1.26.2/RELEASE     2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/RELEASE     2025-06-26 22:25:24.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer gst-devtools 1.26.2.
+This is GStreamer gst-devtools 1.26.3.
 
 The GStreamer team is thrilled to announce a new major feature release
 of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-devtools-1.26.2/gst-devtools.doap 
new/gst-devtools-1.26.3/gst-devtools.doap
--- old/gst-devtools-1.26.2/gst-devtools.doap   2025-05-30 00:56:43.000000000 
+0200
+++ new/gst-devtools-1.26.3/gst-devtools.doap   2025-06-26 22:25:24.000000000 
+0200
@@ -55,6 +55,16 @@
 
  <release>
   <Version>
+   <revision>1.26.3</revision>
+   <branch>1.26</branch>
+   <name></name>
+   <created>2025-06-26</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-1.26.3.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.26.2</revision>
    <branch>1.26</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-devtools-1.26.2/meson.build 
new/gst-devtools-1.26.3/meson.build
--- old/gst-devtools-1.26.2/meson.build 2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/meson.build 2025-06-26 22:25:24.000000000 +0200
@@ -1,5 +1,5 @@
 project('gst-devtools', 'c',
-  version : '1.26.2',
+  version : '1.26.3',
   meson_version : '>= 1.4',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/flow/formatting.c 
new/gst-devtools-1.26.3/validate/gst/validate/flow/formatting.c
--- old/gst-devtools-1.26.2/validate/gst/validate/flow/formatting.c     
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/flow/formatting.c     
2025-06-26 22:25:24.000000000 +0200
@@ -367,6 +367,7 @@
           g_string_append_c (content, ' ');
         g_string_append_printf (content, "0x%02x", map.data[i]);
       }
+      gst_buffer_unmap (buffer, &map);
 
       buffer_parts[buffer_parts_index++] = g_string_free (content, FALSE);
     } else {
@@ -436,6 +437,7 @@
       buffer_parts_index > 0 ? g_strjoinv (", ",
       buffer_parts) : g_strdup ("(empty)");
 
+  g_strfreev (logged_fields);
   g_strfreev (ignored_fields);
   g_free (meta_str);
   g_free (flags_str);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/flow/gstvalidateflow.c 
new/gst-devtools-1.26.3/validate/gst/validate/flow/gstvalidateflow.c
--- old/gst-devtools-1.26.2/validate/gst/validate/flow/gstvalidateflow.c        
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/flow/gstvalidateflow.c        
2025-06-26 22:25:24.000000000 +0200
@@ -709,3 +709,9 @@
 
   return TRUE;
 }
+
+void
+_priv_validate_flow_deinit (void)
+{
+  g_clear_list (&all_overrides, gst_object_unref);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-internal.h 
new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-internal.h
--- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-internal.h       
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-internal.h       
2025-06-26 22:25:24.000000000 +0200
@@ -79,6 +79,8 @@
 
 G_GNUC_INTERNAL gboolean gst_validate_extra_checks_init (void);
 G_GNUC_INTERNAL gboolean gst_validate_flow_init (void);
+G_GNUC_INTERNAL void _priv_validate_flow_deinit (void);
+
 G_GNUC_INTERNAL gboolean is_tty (void);
 
 /* MediaDescriptor structures */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-mockdecryptor.c 
new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-mockdecryptor.c
--- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-mockdecryptor.c  
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-mockdecryptor.c  
2025-06-26 22:25:24.000000000 +0200
@@ -168,6 +168,7 @@
         gst_caps_intersect_full (transformed_caps, filter,
         GST_CAPS_INTERSECT_FIRST);
     gst_caps_replace (&transformed_caps, intersection);
+    gst_caps_unref (intersection);
   }
 
   GST_DEBUG_OBJECT (base, "returning %" GST_PTR_FORMAT, transformed_caps);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-pad-monitor.c 
new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-pad-monitor.c
--- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-pad-monitor.c    
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-pad-monitor.c    
2025-06-26 22:25:24.000000000 +0200
@@ -442,15 +442,15 @@
     monitor, GstStructure * structure)
 {
   _check_field_type (monitor, structure, TRUE, "width", G_TYPE_INT,
-      GST_TYPE_INT_RANGE, 0);
+      GST_TYPE_INT_RANGE, (GType) 0);
   _check_field_type (monitor, structure, TRUE, "height", G_TYPE_INT,
-      GST_TYPE_INT_RANGE, 0);
+      GST_TYPE_INT_RANGE, (GType) 0);
   _check_field_type (monitor, structure, TRUE, "framerate", GST_TYPE_FRACTION,
-      GST_TYPE_FRACTION_RANGE, 0);
+      GST_TYPE_FRACTION_RANGE, (GType) 0);
   _check_field_type (monitor, structure, FALSE, "pixel-aspect-ratio",
-      GST_TYPE_FRACTION, GST_TYPE_FRACTION_RANGE, 0);
+      GST_TYPE_FRACTION, GST_TYPE_FRACTION_RANGE, (GType) 0);
   _check_field_type (monitor, structure, TRUE, "format", G_TYPE_STRING,
-      GST_TYPE_LIST);
+      GST_TYPE_LIST, (GType) 0);
 }
 
 static void
@@ -459,17 +459,17 @@
 {
   gint channels;
   _check_field_type (monitor, structure, TRUE, "format", G_TYPE_STRING,
-      GST_TYPE_LIST, 0);
+      GST_TYPE_LIST, (GType) 0);
   _check_field_type (monitor, structure, TRUE, "layout", G_TYPE_STRING,
-      GST_TYPE_LIST, 0);
+      GST_TYPE_LIST, (GType) 0);
   _check_field_type (monitor, structure, TRUE, "rate", G_TYPE_INT,
-      GST_TYPE_LIST, GST_TYPE_INT_RANGE, 0);
+      GST_TYPE_LIST, GST_TYPE_INT_RANGE, (GType) 0);
   _check_field_type (monitor, structure, TRUE, "channels", G_TYPE_INT,
-      GST_TYPE_LIST, GST_TYPE_INT_RANGE, 0);
+      GST_TYPE_LIST, GST_TYPE_INT_RANGE, (GType) 0);
   if (gst_structure_get_int (structure, "channels", &channels)) {
     if (channels > 2)
       _check_field_type (monitor, structure, TRUE, "channel-mask",
-          GST_TYPE_BITMASK, GST_TYPE_LIST, 0);
+          GST_TYPE_BITMASK, GST_TYPE_LIST, (GType) 0);
   }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-pipeline-monitor.c 
new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-pipeline-monitor.c
--- 
old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-pipeline-monitor.c   
    2025-05-30 00:56:43.000000000 +0200
+++ 
new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-pipeline-monitor.c   
    2025-06-26 22:25:24.000000000 +0200
@@ -488,6 +488,7 @@
     }
   }
 
+  gst_caps_unref (refused_caps);
   gst_caps_unref (possible_caps);
   gst_object_unref (pad);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-report.c 
new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-report.c
--- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-report.c 
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-report.c 
2025-06-26 22:25:24.000000000 +0200
@@ -133,9 +133,8 @@
   if (G_UNLIKELY (g_atomic_int_dec_and_test (&issue->refcount))) {
     g_free (issue->summary);
     g_free (issue->description);
-
-    /* We are using an string array for area and name */
-    g_strfreev (&issue->area);
+    g_free (issue->area);
+    g_free (issue->name);
 
     g_free (issue);
   }
@@ -252,6 +251,7 @@
   }
 
   issue = g_new (GstValidateIssue, 1);
+  issue->refcount = 1;
   issue->issue_id = issue_id;
   issue->summary = g_strdup (summary);
   issue->description = g_strdup (description);
@@ -289,6 +289,7 @@
   }
 
   issue = g_new (GstValidateIssue, 1);
+  issue->refcount = 1;
   issue->issue_id = issue_id;
   issue->summary = g_strdup (summary);
   issue->description = g_strdup (description);
@@ -699,8 +700,6 @@
     gchar **wanted_files;
     wanted_files = g_strsplit (file_env, G_SEARCHPATH_SEPARATOR_S, 0);
 
-    /* FIXME: Make sure it is freed in the deinit function when that is
-     * implemented */
     log_files =
         g_malloc0 (sizeof (FILE *) * (g_strv_length (wanted_files) + 1));
     for (i = 0; i < g_strv_length (wanted_files); i++) {
@@ -738,6 +737,15 @@
 void
 gst_validate_report_deinit (void)
 {
+#ifndef GST_DISABLE_GST_DEBUG
+  g_clear_pointer (&newline_regex, g_regex_unref);
+#endif
+
+  if (_gst_validate_issues)
+    g_hash_table_destroy (g_steal_pointer (&_gst_validate_issues));
+
+  _gst_validate_report_start_time = 0;
+
   if (server_ostream) {
     g_output_stream_close (server_ostream, NULL, NULL);
     server_ostream = NULL;
@@ -745,6 +753,16 @@
 
   g_clear_object (&socket_client);
   g_clear_object (&server_connection);
+
+  if (log_files) {
+    gint i;
+    for (i = 0; log_files[i]; i++) {
+      if (log_files[i] != stdout && log_files[i] != stderr)
+        fclose (log_files[i]);
+    }
+    g_free (log_files);
+    log_files = NULL;
+  }
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-reporter.c 
new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-reporter.c
--- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-reporter.c       
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-reporter.c       
2025-06-26 22:25:24.000000000 +0200
@@ -90,6 +90,7 @@
         g_direct_equal, NULL, (GDestroyNotify) gst_validate_report_unref);
 
     g_mutex_init (&priv->reports_lock);
+    g_weak_ref_init (&priv->runner, NULL);
     g_object_set_data_full (G_OBJECT (reporter), REPORTER_PRIVATE, priv,
         (GDestroyNotify) _free_priv);
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-scenario.c 
new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-scenario.c
--- old/gst-devtools-1.26.2/validate/gst/validate/gst-validate-scenario.c       
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/gst-validate-scenario.c       
2025-06-26 22:25:24.000000000 +0200
@@ -259,6 +259,8 @@
   guint signal_handler_id;      /* MT safe. Protect with SCENARIO_LOCK */
   guint action_execution_interval;
 
+  gboolean has_stopped;
+
   /* Name of message the wait action is waiting for */
   GstValidateAction *wait_message_action;
 
@@ -756,6 +758,8 @@
   } else {
     GST_INFO_OBJECT (scenario, "Could not query position");
   }
+
+  gst_object_unref (pipeline);
 }
 
 static GstElement *_get_target_element (GstValidateScenario * scenario,
@@ -1389,6 +1393,7 @@
     gst_object_add_control_binding (obj, binding);
   } else {
     g_object_get (binding, "control-source", &source, NULL);
+    gst_clear_object (&binding);
   }
 
   REPORT_UNLESS (GST_IS_TIMED_VALUE_CONTROL_SOURCE (source), err,
@@ -1399,12 +1404,14 @@
       GST_TIME_ARGS (timestamp));
 
   gst_object_unref (obj);
+  gst_clear_object (&source);
   gst_structure_set (structure, "__res__", G_TYPE_INT, res, NULL);
 
   return TRUE;
 
 err:
   gst_clear_object (&obj);
+  gst_clear_object (&source);
   gst_structure_set (structure, "__res__", G_TYPE_INT,
       GST_VALIDATE_EXECUTE_ACTION_ERROR_REPORTED, NULL);
 
@@ -2207,6 +2214,7 @@
 {
   gst_validate_action_unref (d->action);
   g_list_free_full (d->wanted_streams, g_free);
+  g_rec_mutex_clear (&d->m);
 }
 
 static void
@@ -2221,6 +2229,7 @@
   GstValidateScenario *scenario = NULL;
   GstStreamCollection *collection = NULL, *selected_streams = NULL;
   GList *streams = NULL;
+  GstElement *pipeline = NULL;
 
   switch (GST_MESSAGE_TYPE (message)) {
     case GST_MESSAGE_STREAM_COLLECTION:
@@ -2286,7 +2295,7 @@
   }
 
 
-  GstElement *pipeline = gst_validate_scenario_get_pipeline (scenario);
+  pipeline = gst_validate_scenario_get_pipeline (scenario);
   if (pipeline == NULL) {
     GST_VALIDATE_REPORT_ACTION (scenario, d->action,
         SCENARIO_ACTION_EXECUTION_ERROR,
@@ -2311,7 +2320,7 @@
   if (selected_streams && d->message_sid &&
       d->wanted_n_calls >= 1 && d->n_calls == d->wanted_n_calls) {
     /* Consider action done once we get the STREAM_SELECTED signal */
-    gst_validate_action_set_done (gst_validate_action_ref (d->action));
+    gst_validate_action_set_done (d->action);
     gst_bus_disable_sync_message_emission (bus);
     g_signal_handler_disconnect (bus, d->message_sid);
     d->message_sid = 0;
@@ -2324,6 +2333,8 @@
 
   gst_clear_object (&scenario);
   gst_clear_object (&collection);
+  gst_clear_object (&selected_streams);
+  gst_clear_object (&pipeline);
 
   g_rec_mutex_unlock (&d->m);
 }
@@ -2347,7 +2358,7 @@
         d->wanted_n_calls, d->n_calls);
   }
 
-  gst_validate_action_set_done (gst_validate_action_ref (d->action));
+  gst_validate_action_set_done (d->action);
 
   if (bus && d->message_sid) {
     gst_bus_disable_sync_message_emission (bus);
@@ -2360,6 +2371,9 @@
     d->stopping_sid = 0;
   }
   g_rec_mutex_unlock (&d->m);
+
+  gst_clear_object (&pipeline);
+  gst_clear_object (&bus);
 }
 
 static GstValidateExecuteActionReturn
@@ -2386,6 +2400,7 @@
   g_rec_mutex_unlock (&d->m);
 
   gst_object_unref (bus);
+  gst_object_unref (pipeline);
 
   return GST_VALIDATE_EXECUTE_ACTION_NON_BLOCKING;
 }
@@ -2472,7 +2487,8 @@
 
   SCENARIO_LOCK (scenario);
   if (priv->execute_actions_source_id == 0 && priv->wait_id == 0
-      && priv->signal_handler_id == 0 && priv->wait_message_action == NULL) {
+      && priv->signal_handler_id == 0 && priv->wait_message_action == NULL
+      && !priv->has_stopped) {
     if (!scenario->priv->action_execution_interval)
       priv->execute_actions_source_id =
           g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
@@ -2911,6 +2927,8 @@
           data->subaction_done_sigid);
       data->subaction_done_sigid = 0;
     }
+
+    gst_validate_action_set_done (subaction);
   }
   g_mutex_unlock (&data->sigid_lock);
   validate_action_foreign_scenario_data_unref (data);
@@ -2948,6 +2966,7 @@
     res = action_type->prepare (action);
     if (res == GST_VALIDATE_EXECUTE_ACTION_DONE) {
       gst_validate_print_action (action, NULL);
+      gst_object_unref (scenario);
       return GST_VALIDATE_EXECUTE_ACTION_OK;
     }
 
@@ -3185,7 +3204,8 @@
   }
 
   if (message) {
-    if (!_check_message_type (scenario, act, message))
+    if (!_check_message_type (scenario, act, message)
+        && GST_MESSAGE_TYPE (message) != GST_MESSAGE_ERROR)
       return G_SOURCE_CONTINUE;
   } else if ((act && gst_structure_get_string (act->structure, "on-message") &&
           !GST_CLOCK_TIME_IS_VALID (act->playback_time)) ||
@@ -3218,7 +3238,10 @@
           " to be done.");
 
       SCENARIO_LOCK (scenario);
-      priv->execute_actions_source_id = 0;
+      if (priv->execute_actions_source_id) {
+        g_source_remove (priv->execute_actions_source_id);
+        priv->execute_actions_source_id = 0;
+      }
       SCENARIO_UNLOCK (scenario);
 
       return G_SOURCE_REMOVE;
@@ -3638,6 +3661,7 @@
       (GClosureNotify) gst_validate_action_unref, G_CONNECT_AFTER);
 
   gst_clear_object (&bus);
+  gst_clear_object (&pipeline);
 
   return GST_VALIDATE_EXECUTE_ACTION_ASYNC;
 }
@@ -4213,6 +4237,7 @@
 {
   g_list_free_full (data->actions, (GDestroyNotify) gst_validate_action_unref);
   g_mutex_clear (&data->actions_lock);
+  g_free (data);
 }
 
 static GstFlowReturn
@@ -4221,8 +4246,7 @@
   ChainWrapperFunctionData *data =
       g_object_get_qdata (G_OBJECT (pad), chain_qdata);
 
-  return data->wrapper_function (pad, parent, buffer,
-      g_object_get_qdata (G_OBJECT (pad), chain_qdata));
+  return data->wrapper_function (pad, parent, buffer, data);
 }
 
 static void
@@ -4387,6 +4411,7 @@
 
     g_signal_emit_by_name (appsink, "pull-sample", &sample, NULL);
 
+    g_strfreev (pipeline_elements);
     goto push_sample;
   }
 
@@ -5290,6 +5315,7 @@
       g_list_free_full (priv->seeks,
           (GDestroyNotify) gst_validate_seek_information_free);
       priv->seeks = NULL;
+      priv->current_seek = NULL;
       SCENARIO_UNLOCK (scenario);
 
       GST_DEBUG_OBJECT (scenario, "Got EOS; generate 'stop' action");
@@ -5958,6 +5984,7 @@
   }
 
   gst_object_replace ((GstObject **) & priv->clock, NULL);
+  gst_object_unref (runner);
 
   G_OBJECT_CLASS (gst_validate_scenario_parent_class)->dispose (object);
 }
@@ -6228,6 +6255,7 @@
     gst_validate_printf (NULL,
         "**-> Using clock %" GST_PTR_FORMAT " on %" GST_PTR_FORMAT "**\n",
         system_clock, pipeline);
+    gst_object_unref (system_clock);
   }
 
   gst_validate_reporter_set_name (GST_VALIDATE_REPORTER (scenario),
@@ -6423,7 +6451,8 @@
     GFile *f = g_file_enumerator_get_child (fenum, info);
 
     _parse_scenario (f, kf);
-    gst_object_unref (f);
+    g_object_unref (info);
+    g_object_unref (f);
   }
 
   gst_object_unref (fenum);
@@ -6937,8 +6966,6 @@
   const gchar *direction = gst_structure_get_string (action->structure,
       "direction"), *pad_name, *srcpad_name;
 
-  DECLARE_AND_GET_PIPELINE (scenario, action);
-
   if (gst_structure_get_string (action->structure, "target-element-name")) {
     GstElement *target = _get_target_element (scenario, action);
     if (target == NULL)
@@ -7102,6 +7129,8 @@
     g_source_remove (priv->execute_actions_source_id);
     priv->execute_actions_source_id = 0;
   }
+  scenario->priv->has_stopped = TRUE;
+
   if (scenario->priv->actions || scenario->priv->non_blocking_running_actions 
||
       scenario->priv->on_addition_actions) {
     guint nb_actions = 0;
@@ -7309,6 +7338,7 @@
 {
   GstValidateMonitor *monitor;
   GstValidateAction *action;
+  GstElement *pipeline;
 } SubPipelineData;
 
 static void
@@ -7316,7 +7346,8 @@
 {
   SubPipelineData *sub_data = (SubPipelineData *) data;
 
-  g_clear_object (&sub_data->monitor);
+  gst_clear_object (&sub_data->monitor);
+  gst_clear_object (&sub_data->pipeline);
   gst_validate_action_unref (sub_data->action);
 }
 
@@ -7330,10 +7361,6 @@
 subscenario_done_cb (GstBus * bus, GstMessage * message, gpointer data)
 {
   SubPipelineData *sub_data = (SubPipelineData *) data;
-  GstElement *pipeline =
-      GST_ELEMENT (gst_validate_monitor_get_target (sub_data->monitor));
-  g_assert (pipeline);
-
   GstState state;
 
   gst_message_parse_request_state (message, &state);
@@ -7343,7 +7370,7 @@
     return;
   }
 
-  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_element_set_state (sub_data->pipeline, GST_STATE_NULL);
   gst_validate_action_set_done (sub_data->action);
 
   g_signal_handlers_disconnect_by_func (bus, subscenario_done_cb, data);
@@ -7390,6 +7417,7 @@
           scenario_name ? scenario_name : (name ? name : 
"unnamed-subscenario"),
           scenario_structures, TRUE));
   data->action = gst_validate_action_ref (action);
+  data->pipeline = GST_ELEMENT_CAST (pipeline);
 
   gboolean monitor_handles_state;
   g_object_get (data->monitor, "handles-states", &monitor_handles_state, NULL);
@@ -7598,6 +7626,7 @@
       err->message);
   REPORT_UNLESS (sscanf (line, "PORT: %d", &port) == 1, done,
       "Failed to parse port number from server output: %s", line);
+  g_free (line);
 
   server.port = port;
   server.subprocess = subprocess;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-devtools-1.26.2/validate/gst/validate/validate.c 
new/gst-devtools-1.26.3/validate/gst/validate/validate.c
--- old/gst-devtools-1.26.2/validate/gst/validate/validate.c    2025-05-30 
00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/gst/validate/validate.c    2025-06-26 
22:25:24.000000000 +0200
@@ -518,7 +518,8 @@
   g_list_free (core_config);
   core_config = NULL;
 
-  g_list_free_full (all_configs, (GDestroyNotify) gst_structure_free);
+  g_list_free_full (g_steal_pointer (&all_configs),
+      (GDestroyNotify) gst_structure_free);
   gst_validate_deinit_runner ();
 
   gst_validate_scenario_deinit ();
@@ -529,6 +530,12 @@
   testfile_structs = NULL;
   g_clear_pointer (&global_testfile, g_free);
 
+  if (validate_initialized) {
+    g_rec_mutex_clear (&init_lock);
+    memset (&init_lock, 0, sizeof (GRecMutex));
+  }
+
+  _priv_validate_flow_deinit ();
   _priv_validate_override_registry_deinit ();
   validate_initialized = FALSE;
   gst_validate_report_deinit ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-devtools-1.26.2/validate/launcher/baseclasses.py 
new/gst-devtools-1.26.3/validate/launcher/baseclasses.py
--- old/gst-devtools-1.26.2/validate/launcher/baseclasses.py    2025-05-30 
00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/launcher/baseclasses.py    2025-06-26 
22:25:24.000000000 +0200
@@ -647,9 +647,6 @@
         return command
 
     def use_valgrind(self, command, subenv):
-        vglogsfile = os.path.splitext(self.logfile)[0] + '.valgrind'
-        self.extra_logfiles.add(vglogsfile)
-
         vg_args = []
 
         for o, v in [('trace-children', 'yes'),
@@ -671,7 +668,7 @@
         if not self.options.redirect_logs:
             vglogsfile = os.path.splitext(self.logfile)[0] + '.valgrind'
             self.extra_logfiles.add(vglogsfile)
-            vg_args.append("--%s=%s" % ('log-file', vglogsfile))
+            vg_args.append("--%s=%s" % ('log-file', vglogsfile.replace("%", 
"%%")))
 
         for supp in self.get_valgrind_suppressions():
             vg_args.append("--suppressions=%s" % supp)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/plugins/ssim/gstvalidatessim.c 
new/gst-devtools-1.26.3/validate/plugins/ssim/gstvalidatessim.c
--- old/gst-devtools-1.26.2/validate/plugins/ssim/gstvalidatessim.c     
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/plugins/ssim/gstvalidatessim.c     
2025-06-26 22:25:24.000000000 +0200
@@ -326,7 +326,7 @@
     GST_INFO_OBJECT (pad,
         "Doesn't have template, can't use it %" GST_PTR_FORMAT,
         gst_pad_query_caps (pad, NULL));
-    return FALSE;
+    goto fail;
   }
 
   template_caps = GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (pad));
@@ -481,6 +481,7 @@
   caps = gst_pad_get_current_caps (pad);
   gst_object_unref (pad);
   gst_caps_replace (&priv->last_caps, caps);
+  gst_caps_unref (caps);
 
   gst_video_info_init (&priv->in_info);
   gst_video_info_init (&priv->out_info);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/tests/check/validate/expression_parser.c 
new/gst-devtools-1.26.3/validate/tests/check/validate/expression_parser.c
--- old/gst-devtools-1.26.2/validate/tests/check/validate/expression_parser.c   
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/tests/check/validate/expression_parser.c   
2025-06-26 22:25:24.000000000 +0200
@@ -29,21 +29,28 @@
 
 GST_END_TEST;
 
+static void
+setup (void)
+{
+  gst_validate_init ();
+}
+
+static void
+teardown (void)
+{
+  gst_validate_deinit ();
+}
+
 static Suite *
 gst_validate_suite (void)
 {
   Suite *s = suite_create ("registry");
   TCase *tc_chain = tcase_create ("registry");
   suite_add_tcase (s, tc_chain);
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
 
-  if (atexit (gst_validate_deinit) != 0) {
-    GST_ERROR ("failed to set gst_validate_deinit as exit function");
-  }
-
-  g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE);
-  gst_validate_init ();
   tcase_add_test (tc_chain, test_expression_parser);
-  gst_validate_deinit ();
+  g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE);
 
   return s;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/tests/check/validate/monitoring.c 
new/gst-devtools-1.26.3/validate/tests/check/validate/monitoring.c
--- old/gst-devtools-1.26.2/validate/tests/check/validate/monitoring.c  
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/tests/check/validate/monitoring.c  
2025-06-26 22:25:24.000000000 +0200
@@ -86,21 +86,32 @@
       g_object_get_data ((GObject *) sink->sinkpads->data, "validate-monitor");
   gst_check_objects_destroyed_on_unref (monitor, pmonitor1, pmonitor2, NULL);
   gst_check_objects_destroyed_on_unref (pipeline, src, sink, NULL);
+
+  gst_object_unref (runner);
 }
 
 GST_END_TEST;
 
 
+static void
+setup (void)
+{
+  gst_validate_init ();
+}
+
+static void
+teardown (void)
+{
+  gst_validate_deinit ();
+}
+
 static Suite *
 gst_validate_suite (void)
 {
   Suite *s = suite_create ("monitoring");
   TCase *tc_chain = tcase_create ("monitoring");
   suite_add_tcase (s, tc_chain);
-
-  if (atexit (gst_validate_deinit) != 0) {
-    GST_ERROR ("failed to set gst_validate_deinit as exit function");
-  }
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
 
   tcase_add_test (tc_chain, monitors_added);
   tcase_add_test (tc_chain, monitors_cleanup);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/tests/check/validate/overrides.c 
new/gst-devtools-1.26.3/validate/tests/check/validate/overrides.c
--- old/gst-devtools-1.26.2/validate/tests/check/validate/overrides.c   
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/tests/check/validate/overrides.c   
2025-06-26 22:25:24.000000000 +0200
@@ -93,22 +93,30 @@
 GST_END_TEST;
 
 
+static void
+setup (void)
+{
+  gst_validate_init ();
+}
+
+static void
+teardown (void)
+{
+  gst_validate_deinit ();
+}
+
 static Suite *
 gst_validate_suite (void)
 {
   Suite *s = suite_create ("registry");
   TCase *tc_chain = tcase_create ("registry");
   suite_add_tcase (s, tc_chain);
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
 
-  if (atexit (gst_validate_deinit) != 0) {
-    GST_ERROR ("failed to set gst_validate_deinit as exit function");
-  }
+  tcase_add_test (tc_chain, check_text_overrides);
   // Do not abort on critical issues, as this test will generate them on 
purpose.
   g_setenv ("GST_VALIDATE", "print_issues", TRUE);
   g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE);
-  gst_validate_init ();
-  tcase_add_test (tc_chain, check_text_overrides);
-  gst_validate_deinit ();
 
   return s;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/tests/check/validate/padmonitor.c 
new/gst-devtools-1.26.3/validate/tests/check/validate/padmonitor.c
--- old/gst-devtools-1.26.2/validate/tests/check/validate/padmonitor.c  
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/tests/check/validate/padmonitor.c  
2025-06-26 22:25:24.000000000 +0200
@@ -154,6 +154,7 @@
   _check_reports_refcount (srcpad, 2);
   gst_object_unref (srcpad);
   gst_check_object_destroyed_on_unref (sink);
+  gst_object_unref (monitor);
   ASSERT_OBJECT_REFCOUNT (runner, "runner", 2);
   gst_object_unref (runner);
 }
@@ -221,11 +222,15 @@
     buffer = gst_discont_buffer_new ();
     GST_BUFFER_PTS (buffer) = 10 * GST_SECOND;
     GST_BUFFER_DURATION (buffer) = GST_SECOND;
-    fail_if (GST_PAD_IS_FLUSHING (gst_element_get_static_pad (identity,
-                "sink")));
-    fail_if (GST_PAD_IS_FLUSHING (gst_element_get_static_pad (identity,
-                "src")));
-    fail_if (GST_PAD_IS_FLUSHING (gst_element_get_static_pad (sink, "sink")));
+    pad = gst_element_get_static_pad (identity, "sink");
+    fail_if (GST_PAD_IS_FLUSHING (pad));
+    gst_clear_object (&pad);
+    pad = gst_element_get_static_pad (identity, "src");
+    fail_if (GST_PAD_IS_FLUSHING (pad));
+    gst_clear_object (&pad);
+    pad = gst_element_get_static_pad (sink, "sink");
+    fail_if (GST_PAD_IS_FLUSHING (pad));
+    gst_clear_object (&pad);
     fail_unless_equals_int (gst_pad_push (srcpad, buffer), GST_FLOW_OK);
 
     reports = gst_validate_runner_get_reports (runner);
@@ -1057,20 +1062,31 @@
 
 
 
+static void
+setup (void)
+{
+  /*
+   * Don't initialize validate here. Each test needs to setup the
+   * environment before initialization
+   */
+  /* gst_validate_init (); */
+
+  fake_elements_register ();
+}
+
+static void
+teardown (void)
+{
+  gst_validate_deinit ();
+}
+
 static Suite *
 gst_validate_suite (void)
 {
   Suite *s = suite_create ("padmonitor");
   TCase *tc_chain = tcase_create ("padmonitor");
   suite_add_tcase (s, tc_chain);
-
-  if (atexit (gst_validate_deinit) != 0) {
-    GST_ERROR ("failed to set gst_validate_deinit as exit function");
-  }
-  // Do not abort on critical issues, as this test will generate them on 
purpose.
-  g_setenv ("GST_VALIDATE", "print_issues", TRUE);
-
-  fake_elements_register ();
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
 
   tcase_add_test (tc_chain, buffer_before_segment);
   tcase_add_test (tc_chain, buffer_outside_segment);
@@ -1097,6 +1113,9 @@
   tcase_add_test (tc_chain, flow_error_without_message);
   tcase_add_test (tc_chain, flow_error_with_message);
 
+  // Do not abort on critical issues, as this test will generate them on 
purpose.
+  g_setenv ("GST_VALIDATE", "print_issues", TRUE);
+
   return s;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/tests/check/validate/reporting.c 
new/gst-devtools-1.26.3/validate/tests/check/validate/reporting.c
--- old/gst-devtools-1.26.2/validate/tests/check/validate/reporting.c   
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/tests/check/validate/reporting.c   
2025-06-26 22:25:24.000000000 +0200
@@ -135,9 +135,9 @@
 
   gst_object_unref (element);
 
-  g_object_unref (pipeline_monitor);
+  gst_object_unref (pipeline_monitor);
   gst_object_unref (pipeline);
-  g_object_unref (runner);
+  gst_object_unref (runner);
 }
 
 GST_END_TEST;
@@ -206,6 +206,10 @@
   gst_object_unref (sinkpad);
   gst_object_unref (funnel_sink1);
   gst_object_unref (funnel_sink2);
+  free_element_monitor (fakemixer);
+  free_element_monitor (sink);
+  free_element_monitor (src2);
+  free_element_monitor (src1);
   gst_check_objects_destroyed_on_unref (fakemixer, funnel_sink1, funnel_sink2,
       NULL);
   gst_check_objects_destroyed_on_unref (src1, srcpad1, NULL);
@@ -250,18 +254,31 @@
 
 #undef TEST_LEVELS
 
+static void
+setup (void)
+{
+  /*
+   * Don't initialize validate here. Each test needs to setup the
+   * environment before initialization
+   */
+  /* gst_validate_init (); */
+
+  fake_elements_register ();
+}
+
+static void
+teardown (void)
+{
+  gst_validate_deinit ();
+}
+
 static Suite *
 gst_validate_suite (void)
 {
   Suite *s = suite_create ("reporting");
   TCase *tc_chain = tcase_create ("reporting");
   suite_add_tcase (s, tc_chain);
-
-  if (atexit (gst_validate_deinit) != 0) {
-    GST_ERROR ("failed to set gst_validate_deinit as exit function");
-  }
-
-  fake_elements_register ();
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
 
   tcase_add_test (tc_chain, test_report_levels_all);
   tcase_add_test (tc_chain, test_report_levels_2);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/tests/check/validate/scenario.c 
new/gst-devtools-1.26.3/validate/tests/check/validate/scenario.c
--- old/gst-devtools-1.26.2/validate/tests/check/validate/scenario.c    
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/tests/check/validate/scenario.c    
2025-06-26 22:25:24.000000000 +0200
@@ -37,26 +37,37 @@
   fail_unless_equals_uint64 (start, 50 * GST_SECOND);
   gst_validate_action_unref (action);
 
+  gst_mini_object_unref (GST_MINI_OBJECT (seek_type));
+  gst_mini_object_unref (GST_MINI_OBJECT (set_vars));
+  gst_object_unref (scenario);
   gst_object_unref (runner);
 }
 
 GST_END_TEST;
 
+static void
+setup (void)
+{
+  gst_validate_init ();
+}
+
+static void
+teardown (void)
+{
+  gst_validate_deinit ();
+}
+
 static Suite *
 gst_validate_suite (void)
 {
   Suite *s = suite_create ("registry");
   TCase *tc_chain = tcase_create ("registry");
   suite_add_tcase (s, tc_chain);
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
 
-  if (atexit (gst_validate_deinit) != 0) {
-    GST_ERROR ("failed to set gst_validate_deinit as exit function");
-  }
+  tcase_add_test (tc_chain, test_expression_parser);
 
   g_setenv ("GST_VALIDATE_REPORTING_DETAILS", "all", TRUE);
-  gst_validate_init ();
-  tcase_add_test (tc_chain, test_expression_parser);
-  gst_validate_deinit ();
 
   return s;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/tests/check/validate/utilities.c 
new/gst-devtools-1.26.3/validate/tests/check/validate/utilities.c
--- old/gst-devtools-1.26.2/validate/tests/check/validate/utilities.c   
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/tests/check/validate/utilities.c   
2025-06-26 22:25:24.000000000 +0200
@@ -41,20 +41,27 @@
 
 GST_END_TEST;
 
+static void
+setup (void)
+{
+  gst_validate_init ();
+}
+
+static void
+teardown (void)
+{
+  gst_validate_deinit ();
+}
+
 static Suite *
 gst_validate_suite (void)
 {
   Suite *s = suite_create ("utilities");
   TCase *tc_chain = tcase_create ("utilities");
   suite_add_tcase (s, tc_chain);
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
 
-  if (atexit (gst_validate_deinit) != 0) {
-    GST_ERROR ("failed to set gst_validate_deinit as exit function");
-  }
-
-  gst_validate_init ();
   tcase_add_test (tc_chain, test_resolve_variables);
-  gst_validate_deinit ();
 
   return s;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-devtools-1.26.2/validate/tools/gst-validate-transcoding.c 
new/gst-devtools-1.26.3/validate/tools/gst-validate-transcoding.c
--- old/gst-devtools-1.26.2/validate/tools/gst-validate-transcoding.c   
2025-05-30 00:56:43.000000000 +0200
+++ new/gst-devtools-1.26.3/validate/tools/gst-validate-transcoding.c   
2025-06-26 22:25:24.000000000 +0200
@@ -112,6 +112,8 @@
   GstEncodingProfile *encoding_profile;
 
   g_object_get (pipeline, "profile", &encoding_profile, NULL);
+  gst_object_unref (pipeline);
+
   restriction_caps =
       gst_structure_get_string (action->structure, "restriction-caps");
   profile_type_name =

++++++ gst-devtools.obsinfo ++++++
--- /var/tmp/diff_new_pack.DrpdtQ/_old  2025-07-03 12:12:39.623183340 +0200
+++ /var/tmp/diff_new_pack.DrpdtQ/_new  2025-07-03 12:12:39.627183507 +0200
@@ -1,5 +1,5 @@
 name: gst-devtools
-version: 1.26.2
-mtime: 1748559403
-commit: 100c21e1faf68efe7f3830b6e9f856760697ab48
+version: 1.26.3
+mtime: 1750969524
+commit: 87bc0c6e949e3dcc440658f78ef52aa8088cb62f
 

++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/gstreamer-devtools/vendor.tar.zst 
/work/SRC/openSUSE:Factory/.gstreamer-devtools.new.1903/vendor.tar.zst differ: 
char 7, line 1

Reply via email to