[Bug 784383] New: GST_REFCOUNTING is not trustful

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Jun 30 14:17:37 UTC 2017


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

            Bug ID: 784383
           Summary: GST_REFCOUNTING is not trustful
    Classification: Platform
           Product: GStreamer
           Version: 1.12.x
                OS: Windows
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: martin2.maurer at zeiss.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

It looks like GST_REFCOUNTING is not trustful.
Here are some positive and negative examples:

0:17:04.750351068 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 0->1
0:17:04.780276938 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 1->2
0:17:04.820027254 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 2->1
0:17:04.820703683 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 1->2
0:17:04.821272539 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 2->3
0:17:04.821434809 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 3->2
0:17:04.821782687 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 2->3
0:17:04.822334405 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 3->4
0:17:04.822794595 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 4->3
0:17:04.823494362 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 3->4
0:17:04.824251379 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 4->5
0:17:04.824339989 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 5->6
0:17:04.824508458 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 6->5
0:17:04.826198619 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 5->4
0:17:04.826353960 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 4->3
0:17:04.831242481 12592 0000000018455AC0 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 3->2
0:17:04.846848115 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 2->1
0:17:05.035832498 12592 0000000032E5AD00 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 1->0

Ok, looks good till here…

0:17:05.035941893 12592 0000000032E5AD00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 0->1
0:17:05.054755003 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 1->2
0:17:05.073715067 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 2->1
0:17:05.074437442 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 1->2
0:17:05.075212692 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 2->3
0:17:05.075423096 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 3->2
0:17:05.075862501 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 2->3
0:17:05.076973960 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 3->4
0:17:05.077487024 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 4->3
0:17:05.077946121 12592 0000000018455B00 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 3->2
0:17:05.095318127 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 2->3
0:17:05.096015341 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 3->4
0:17:05.096135676 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 4->5
0:17:05.096370877 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 5->4
0:17:05.096670620 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 4->3
0:17:05.096882118 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 3->2

Ok, still looks good till here…

0:17:05.098080728 12592 0000000018455A40 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 2->1
0:17:05.087528438 12592 0000000018455AC0 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 2->1

Two different threads, which both unref same object at the same time? Mutex not
working??? Perhaps just debug output wrong, and we are now at value 0???

0:17:05.103663546 12592 0000000018455AC0 TRACE        GST_REFCOUNTING
gstminiobject.c:351:gst_mini_object_ref: 00000000186FE690 ref 0->1
0:17:05.104035126 12592 0000000018455AC0 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 1->0

0:17:14.963514410 12592 00000000328DF8C0 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 1->0
0:17:15.294925179 12592 00000000328DF8C0 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 1->0
0:17:15.298323368 12592 00000000328DF8C0 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 1->0
0:17:15.938601043 12592 00000000328DF8C0 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 1->0
0:17:16.004370715 12592 00000000328DF8C0 TRACE        GST_REFCOUNTING
gstminiobject.c:431:gst_mini_object_unref: 00000000186FE690 unref 1->0

A lot of time same object unref von 1 to 0??? But this is even from same
thread?
Counting backwards, we shall be at ref count 0 here.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list