Hi,
for a test I am only calling gst_init/ges_init and gst_deinit of gstreamer (version 1.12.0 on Windows, self-compiled). It takes a while because registry is built up. (I work with enabled registry but it is deleted afterwards, because it is only stored on a temporary drive in RAM. New way of disabling registry cannot yet used, because of use of gstreamer version < 1.12.0. Latest version is only used for my testing.) When activating leak tracer I see the following output/leaked objects: 0:00:34.134545898 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)000000001781E300, description=(string)<bus4>, ref-count=(uint)2, trace=(string); 0:00:34.134604607 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)000000001781E220, description=(string)<bus2>, ref-count=(uint)1, trace=(string); 0:00:34.134659305 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)000000001781E140, description=(string)<bus1>, ref-count=(uint)3, trace=(string); 0:00:34.134712908 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)000000001781E4C0, description=(string)<bus6>, ref-count=(uint)1, trace=(string); 0:00:34.134768335 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)000000001781E060, description=(string)<bus0>, ref-count=(uint)2, trace=(string); 0:00:34.134856946 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)000000001781E3E0, description=(string)<bus5>, ref-count=(uint)2, trace=(string); 0:00:34.134910550 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPipeline, address=(gpointer)0000000009F21650, description=(string)<Discoverer>, ref-count=(uint)1, trace=(string); 0:00:34.134964518 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPipeline, address=(gpointer)0000000009F21850, description=(string)<Discoverer>, ref-count=(uint)1, trace=(string); 0:00:34.135017757 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstQuery, address=(gpointer)0000000017644E10, description=(string)seeking query: 0000000017644E10, GstQuerySeeking, format=(GstFormat)GST_FORMAT_TIME, seekable=(boolean)false, segment-start=(gint64)-1, segment-end=(gint64)-1;, ref-count=(uint)1, trace=(string); 0:00:34.135073549 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstQuery, address=(gpointer)0000000017644E60, description=(string)seeking query: 0000000017644E60, GstQuerySeeking, format=(GstFormat)GST_FORMAT_TIME, seekable=(boolean)false, segment-start=(gint64)-1, segment-end=(gint64)-1;, ref-count=(uint)1, trace=(string); 0:00:34.135128611 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstURIDecodeBin, address=(gpointer)0000000009B49E90, description=(string)<discoverer-uri>, ref-count=(uint)1, trace=(string); 0:00:34.135183309 4584 00000000021FB030 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstURIDecodeBin, address=(gpointer)0000000009B49C20, description=(string)<discoverer-uri>, ref-count=(uint)1, trace=(string); I narrowed it down that at least some objects are created by “Discoverer” (gst-plugins-base-1.0-1.12.0\gst-libs\gst\pbutils\gstdiscoverer.c): WARNING: no real random source present! MMMM I am in gst_discoverer_class_init MMMM I am in gst_discoverer_init 000000001781D130 MMMM Pipeline Discoverer -> 0000000009F21650 MMMM uridecodebin discoverer-uri -> 0000000009B49E90 MMMM Discoverer pipeline bus -> 000000001781E140 MMMM I am in gst_discoverer_set_property MMMM I am in gst_discoverer_set_timeout MMMM I am in gst_discoverer_init 000000001781D220 MMMM Pipeline Discoverer -> 0000000009F21850 MMMM uridecodebin discoverer-uri -> 0000000009B49C20 MMMM Discoverer pipeline bus -> 000000001781E3E0 MMMM I am in gst_discoverer_set_property MMMM I am in gst_discoverer_set_timeout MMMM I am in gst_discoverer_start MMMM I am in start_discovering ** (Test.exe:4584): WARNING **: Leaks detected When using GST_REGISTRY_DISABLE=yes, the leaks go away. So they seem to come from enumeration to build-up the registry. The 2 leaked pipelines, some of the GstBus and the GstURIDecodeBin seem to be allocated in “Discoverer”. Addresses are equal. Perhaps also the other objects are from Discoverer… I assume that leaks also go away when registry file is used and file is existing. What is the exact sequence during enumeration and registry build-up? What is done with a plug-in? Why is two times gst_discoverer_init called? Where is the cleanup procedure for this objects located? I already had a look into plugin writers guide, but not found the needed info (or I have overseen it). Is it only a local problem or can someone also reproduce this? Many thanks! Best regards, Martin _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |