After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 306893 - Unreffing already unreffed buffer when going from PAUSED->READY in divx videos
Unreffing already unreffed buffer when going from PAUSED->READY in divx videos
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-libav
git master
Other Linux
: Normal normal
: 0.8.5
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2005-06-08 14:30 UTC by Edward Hervey
Modified: 2005-06-08 22:30 UTC
See Also:
GNOME target: ---
GNOME version: 2.9/2.10



Description Edward Hervey 2005-06-08 14:30:13 UTC
set up a simple file ! decodebin ! xvimagesink pipeline set it to PLAYING, and
then to READY. The following error appears :
(process:27357): GStreamer-CRITICAL **: gst_data_unref: assertion
`GST_DATA_REFCOUNT_VALUE (data) > 0' failed

It seems to only go wrong with divx videos

A example video that causes that problem is available here :
http://etud.epita.fr/~hervey_e/WobblyWindows.avi

Here is a backtrace where it goes wrong:

  • #1 gst_ffmpegdec_release_buffer
    at gstffmpegdec.c line 564
  • #2 MPV_common_end
    at mpegvideo.c line 426
  • #3 ff_h263_decode_end
    at h263dec.c line 120
  • #4 avcodec_close
    at utils.c line 626
  • #5 gst_ffmpegdec_close
    at gstffmpegdec.c line 362
  • #6 gst_ffmpegdec_change_state
    at gstffmpegdec.c line 1008
  • #7 gst_element_set_state_func
    at gstelement.c line 2853
  • #8 gst_element_set_state
    at gstelement.c line 2796
  • #9 gst_element_dispose
    at gstelement.c line 3105
  • #10 gst_ffmpegdec_dispose
    at gstffmpegdec.c line 294
  • #11 g_object_unref
    from /usr/lib/libgobject-2.0.so.0
  • #12 unlinked
    at gstdecodebin.c line 737
  • #13 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #14 g_signal_has_handler_pending
    from /usr/lib/libgobject-2.0.so.0
  • #15 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #16 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #17 gst_pad_unlink
    at gstpad.c line 1065
  • #18 gst_element_remove_pad
    at gstelement.c line 1257
  • #19 gst_avi_demux_reset
    at gstavidemux.c line 165
  • #20 gst_avi_demux_change_state
    at gstavidemux.c line 2223
  • #21 gst_element_set_state_func
    at gstelement.c line 2853
  • #22 gst_element_set_state
    at gstelement.c line 2796
  • #23 set_kid_state_func
    at gstbin.c line 841
  • #24 gst_bin_foreach
    at gstbin.c line 805
  • #25 gst_bin_change_state
    at gstbin.c line 903
  • #26 gst_decode_bin_change_state
    at gstdecodebin.c line 959
  • #27 gst_element_set_state_func
    at gstelement.c line 2853
  • #28 gst_bin_set_state
    at gstbin.c line 950
  • #29 gst_element_set_state
    at gstelement.c line 2796

Comment 1 Luca Ognibene 2005-06-08 18:31:06 UTC
should be fixed by:

 2005-06-08  Luca Ognibene  <luogni@tin.it>

	* ext/ffmpeg/gstffmpegdec.c (gst_ffmpegdec_change_state): 
	  First close the ffmpeg context than try to free last_buffer.
	  fix #306893

please close the bug (i don't have rights..)