[gstreamer-bugs] [Bug 628176] New: [basetransform] Problems with buffer handling in inplace mode

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sat Aug 28 02:06:52 PDT 2010


https://bugzilla.gnome.org/show_bug.cgi?id=628176
  GStreamer | gstreamer (core) | git

           Summary: [basetransform] Problems with buffer handling in
                    inplace mode
    Classification: Desktop
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: blocker
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: slomo at circular-chaos.org
         QAContact: gstreamer-bugs at lists.sourceforge.net
                CC: thaytan at mad.scientist.com, slomo at circular-chaos.org
      GNOME target: ---
     GNOME version: ---


+++ This bug was initially created as a clone of Bug #628174 +++

==812== Source and destination overlap in memcpy(0xb9846e0, 0xb9846e0, 622080)
==812==    at 0x4027865: memcpy (mc_replace_strmem.c:497)
==812==    by 0x4552926: gst_base_transform_handle_buffer (string3.h:52)
==812==    by 0x4553489: gst_base_transform_chain (gstbasetransform.c:2308)
==812==    by 0x45C31F4: gst_pad_chain_data_unchecked (gstpad.c:4182)
==812==    by 0x45C3C53: gst_pad_push_data (gstpad.c:4411)
==812==    by 0x7EAFB41: handle_slice (gstmpeg2dec.c:1040)
==812==    by 0x7EB0511: gst_mpeg2dec_chain (gstmpeg2dec.c:1227)
==812==    by 0x45C31F4: gst_pad_chain_data_unchecked (gstpad.c:4182)
==812==    by 0x45C3C53: gst_pad_push_data (gstpad.c:4411)
==812==    by 0x7D7F819: gst_queue_loop (gstqueue.c:1109)
==812==    by 0x45F1460: gst_task_func (gsttask.c:271)
==812==    by 0x45F2B36: default_func (gsttaskpool.c:68)
==812==    by 0x476BD0B: ??? (in /lib/libglib-2.0.so.0.2400.1)
==812==    by 0x4769DEE: ??? (in /lib/libglib-2.0.so.0.2400.1)
==812==    by 0x47F696D: start_thread (pthread_create.c:300)
==812==    by 0x48D7A4D: clone (clone.S:130)


This is the memcpy() in gstbasetransform.c:2186:
>      if (inbuf != *outbuf) {
>        /* different buffers, copy the input to the output first, we then do an
>         * in-place transform on the output buffer. */
>        memcpy (GST_BUFFER_DATA (*outbuf), GST_BUFFER_DATA (inbuf),
>            GST_BUFFER_SIZE (inbuf));
>      }

If the data pointers are the same but the buffer pointer are not the same, one
of them must be a subbuffer of the other one and both are not writable at all,
or even worse, they're completely unrelated but share the same memory.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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